2017-05-05 109 views
2

我尝试使用maven(mvn软件包)生成一个.zip文件,并且希望在zip中也有一个MANIFEST文件。 jar文件本身可以工作。 我试图用Maven jar插件生成一个MANIFEST文件,但它不起作用。 我需要做其他事情才能得到一个MANIFEST文件,还是足够使用这个插件?父pom(我展示的父母的母公司)具有maven程序集插件。 (I'm全新到Maven)父POM的Maven不会生成带有Maven jar插件的MANIFEST文件

pom.xml文件:模块的

<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文件:

<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> 

+0

请参考此答案:HTTP://计算器.COM /问题/ 2514429 /创建-A-ZIP归档的最Maven的目标目录(http://stackoverflow.com/questions/2514429/creating-a-zip-archive-of-the- maven-target-directory) – BlackHat

回答

2

在你case maven必须被称为:

mvn clean package assembly:single 

另一种方式才达到相同的结果是修改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> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- bind to the packaging phase --> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
</plugin> 

然后运行:

mvn clean package 

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

+0

所以它自己的Maven jar插件是不够的?因为我的一位朋友没有组装插件,并且对她来说工作得很好,她也不需要在父POM中指定某些内容,就像我一样。 (这是学校)。我到底需要什么程序集插件? (我试图理解所有这一切,不只是复制代码) –

+0

所以它自己的maven jar插件是不够的? >是的,它自己还不够,因为它无法处理你的依赖关系,所以你必须以某种方式让它们进入你的类路径。除了assembly-plugin之外,还有其他的方法。简单的依赖关系复制:https://www.mkyong.com/maven/how-to-create-a-jar-file-with-maven/ – csenga

+0

这是不够的,如果maven程序集插件添加到父pom中?因为我们使用给定的父类pom,所以我查了一下,并且指定了maven-assembly-plugin。 (顺便说一句,感谢您的帮助) –