Java 如何将Maven项目打包为包含jar文件的zip文件

Java 如何将Maven项目打包为包含jar文件的zip文件,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,小介绍 我是马文的新手,我面临着这个问题。 我的项目结构如下所示: |--root |--垃圾箱 |--一些bash脚本 |--配置 |--一些.properties文件 |--j2ee应用程序 |--一些与web相关的文件 |--META-INF |--MANIFEST.MF |--src |--主要 |--爪哇 |--试验 |--爪哇 目标 在执行mvn package之后,我必须获得具有以下结构的.zip文件: |--zip |--垃圾箱 |--一些bash脚本 |--配置 |--con

小介绍

我是马文的新手,我面临着这个问题。 我的项目结构如下所示:

|--root
|--垃圾箱
|--一些bash脚本
|--配置
|--一些.properties文件
|--j2ee应用程序
|--一些与web相关的文件
|--META-INF
|--MANIFEST.MF
|--src
|--主要
|--爪哇
|--试验
|--爪哇

目标

在执行
mvn package
之后,我必须获得具有以下结构的.zip文件:

|--zip
|--垃圾箱
|--一些bash脚本
|--配置

|--config.jar您的assembly.xml应该如下所示

<assembly>
     <id>zip</id>
     <formats>
       <format>zip</format>
     </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
     <dependencySet>
      <unpack>false</unpack>
      <scope>runtime</scope>
      <outputDirectory>lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
     </dependencySet>
   </dependencySets>
   <fileSets>
    <fileSet>
     <directory>${project.build.directory}</directory>
     <outputDirectory>/lib</outputDirectory>
     <includes>
       <include>*.jar</include>
     </includes>
    </fileSet> 
    <fileSet>
      <directory>${project.basedir}/bin</directory>
      <outputDirectory>/bin</outputDirectory>
      <filtered>true</filtered>
      <includes>
        <include>**/*.*</include>
      </includes>
    </fileSet>
    <!-- add fileSet entries for other folders under root -->
  </fileSets>
</assembly>

拉链
拉链
假的
假的
运行时
解放党
假的
${project.build.directory}
/解放党
*jar先生
${project.basedir}/bin
/垃圾箱
真的
**/*.*
我不确定是否有任何方法可以将META-INF放在zip下,而不是放在项目的jar文件中

要更改jar的名称,您需要maven jar插件

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <finalName>new_jar_name</finalName>                   
  </configuration>
</plugin> 

org.apache.maven.plugins
maven jar插件
2.3.2
新的_jar_名称

谢谢您的回答。我已经用您提供的assembly.xml打包了我的项目。查看最后一个.zip文件,我发现lib/groupId-version.jar。我想把这个jar文件命名为classes.jar。你知道怎么做吗?更新了我的answerInner jar文件在answerYou中添加了maven-jar-plugin.Updated assembly.xml后没有更改名称您有显式定义的MANIFEST.MF,所以您正在创建一个OSGi包?或者您自己定义MANIFEST.MF的目的是什么?我需要一个用于ATG应用程序的显式定义MANIFEST.MF。因为我使用的是atg平台。MANIFEST.MF文件的默认位置是
src/main/resources/META-INF/MANIFEST.MF
。此外,将属性转换为
src/main/resources
…将脚本转换为
src/main/scripts
。。。