0

Trying to package using Cmd, and getting [WARNING] JAR will be empty - no content was marked for inclusion!

The build is successful but the produced jar-file is empty as per warning

Sorry tried other solutions also and finally landed here, I am new to java and maven. Please Help

My pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mto</groupId>
    <artifactId>rlso_smoke</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>rlso_smoke</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven 
                defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>

                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>

                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

When tried mvn clean install -DskipTests it is giving warning as jar is empty

When I updated the pom.xml (maven-jar-plugin) with the below

                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <classesDirectory>src</classesDirectory>
                        <excludes>
                            <exclude>**</exclude>
                        </excludes>
                    </configuration>
                </plugin>

Jar produced without errors But on 3KB - Is that right?

But when I tried to execute the jar

java -jar rlso_smoke-0.0.1-SNAPSHOT.jar

Got the below error:

no main manifest attribute, in rlso_smoke-0.0.1-SNAPSHOT.jar

I have seen other answers that Main class is needed. But I also saw that testng doesnt need a Main Class.

Krishnan Mahadevan
  • 14,121
  • 6
  • 34
  • 66
gkiranreddy
  • 53
  • 1
  • 9

1 Answers1

0
                    <excludes>
                        <exclude>**</exclude>
                    </excludes>

This is an instruction to the maven-jar-plugin to exclude all files from the jar. Hence the empty jar being produced. Remove this section and try again.

user1717259
  • 2,717
  • 6
  • 30
  • 44
  • With the exclude I was able to produce the jar but jar was very small size like 3KB, took your suggesstion and removed the exclude and jar was produced bigger size around 5MB. But when I run the jar like ```>java -jar rlso_smoke-0.0.1-SNAPSHOT.jar``` I am getting ```no main manifest attribute, in rlso_smoke-0.0.1-SNAPSHOT.jar``` – gkiranreddy Jul 17 '19 at 15:40
  • That means there's no manifest with main class attribute. Take a look here as to how to create a manifest file https://www.mkyong.com/maven/how-to-create-a-manifest-file-with-maven/ – user1717259 Jul 17 '19 at 15:44
  • I am using testng framework, I think Main class is not needed for testng. Irrespective of that, I added a ```Runner class``` with ```Main``` Still getting getting ```no main manifest attribute, in rlso_smoke-0.0.1-SNAPSHOT.jar```. Will check out the above links also – gkiranreddy Jul 17 '19 at 16:14
  • I updated the jar packaging with manifest ``` org.apache.maven.plugins maven-jar-plugin 3.0.2 com.rlso.internal.RunTests ``` Now the error is ```Error: Could not find or load main class com.rlso.internal.RunTests``` – gkiranreddy Jul 18 '19 at 15:47
  • If I run with -cp option ```java -cp -jar rlso_smoke-0.0.1-SNAPSHOT.jar -verbose``` I am getting error differently ```Error: Could not find or load main class rlso_smoke-0.0.1-SNAPSHOT.jar``` I think I am not packaging it properly please let me know if anything is wrong in the jar packaging, not giving the class path properly or something. – gkiranreddy Jul 18 '19 at 15:49