Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven does not generate a MANIFEST file with maven jar plugin

I try to generate a .zip file with maven (mvn package) and want to have a MANIFEST file in the zip too. The jar file itself does work. I tried to generate a MANIFEST file with maven jar plugin, but it did not work. Do I Have to do something else to get a MANIFEST file, or is it enough to use this plugin? The parent pom (parent of the parent I showed) has maven assembly plugin. (I´m completely new to maven)

pom.xml file of the parent pom:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

pom.xml file of the module:

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <archive>
        <manifest>
          <mainClass>org.jis.Main</mainClass>
          <addClasspath>true</addClasspath>
        </manifest>
      </archive>
    </configuration>
</plugin>
</plugins>

like image 499
Lua Mia Avatar asked May 05 '17 20:05

Lua Mia


People also ask

How do I specify JAR manifest?

You use the m command-line option to add custom information to the manifest during creation of a JAR file. This section describes the m option. The Jar tool automatically puts a default manifest with the pathname META-INF/MANIFEST. MF into any JAR file you create.

Does a JAR file need a manifest?

The answer is the JAR file's manifest. The manifest is a special file that can contain information about the files packaged in a JAR file. By tailoring this "meta" information that the manifest contains, you enable the JAR file to serve a variety of purposes.

How do you create a manifest file?

You can tell Visual Studio to generate a manifest file for a particular project in the project's Property Pages dialog. Under Configuration Properties, select Linker > Manifest File > Generate Manifest. By default, the project properties of new projects are set to generate a manifest file.


1 Answers

In your case maven must be called like:

mvn clean package assembly:single

The other way to achive same result is to modify your pom:

  <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> 
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
 </plugin>

then run:

mvn clean package

ref: https://maven.apache.org/plugins/maven-assembly-plugin/usage.html

like image 59
csenga Avatar answered Oct 19 '22 22:10

csenga