Java 使用额外的非基本文件和批处理文件构建基于非webapp maven2的项目
在移植我的一个简单项目时,我刚刚开始掌握maven2的设置。我已经浏览了这个项目,但是我有点困惑如何扩展和改变这个项目的包装。我试图找到更多关于这个主题的信息,但我认为我要么思考的问题不对,要么搜索的措辞不对 本质上,我想构建一个项目,它包含所有依赖项jar、主jar本身、为方便而启动它的批处理脚本,以及应用程序的其他各种文件(如属性文件等)。但是,我不想把这些都塞进罐子里。我想要一个项目的压缩归档构建,包含所有jar的lib目录,根目录包含属性文件和批处理脚本,可能还有子文件夹来保存额外的非必要文件。有点像:Java 使用额外的非基本文件和批处理文件构建基于非webapp maven2的项目,java,maven-2,build-process,build-automation,Java,Maven 2,Build Process,Build Automation,在移植我的一个简单项目时,我刚刚开始掌握maven2的设置。我已经浏览了这个项目,但是我有点困惑如何扩展和改变这个项目的包装。我试图找到更多关于这个主题的信息,但我认为我要么思考的问题不对,要么搜索的措辞不对 本质上,我想构建一个项目,它包含所有依赖项jar、主jar本身、为方便而启动它的批处理脚本,以及应用程序的其他各种文件(如属性文件等)。但是,我不想把这些都塞进罐子里。我想要一个项目的压缩归档构建,包含所有jar的lib目录,根目录包含属性文件和批处理脚本,可能还有子文件夹来保存额外的非必
- 示例-proj.zip:
- 放松,蝙蝠
- 小道具
- 解放党
- dependent1.jar
- dependent2.jar
- main.jar
- 副处长
- someextrafile.txt
但是我不相信它会将它们打包成zip/tar.gz/etc(appassembler只是将它们放入
target/appassembler
下的文件夹结构中。但是,您可以与appassembler一起使用打包输出-maven assembly在生成zip/jar/tar.gz/bzip2/whatever方面做得非常好,并且您可以使用XML描述符完全控制进入文件的内容。Buil下面是一些如何使用引用插件的示例。注意,执行绑定到集成测试阶段,以确保在尝试打包之前已经创建了jar
将生成批处理/shell文件,下载依赖项(在本例中为lib目录),并将所有内容放在target/appassembler中
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>assemble-standalone</id>
<phase>integration-test</phase>
<goals>
<goal>assemble</goal>
<!--if you only want to create the repo and skip script generation,
use this goal instead-->
<!--goal>create-repository</goal-->
</goals>
<configuration>
<programs>
<program>
<mainClass>name.seller.rich.Foo</mainClass>
<name>foo</name>
</program>
</programs>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
可用于将appassembler输出打包到zip中:
<profiles>
<profile>
<id>archive</id>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-2</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/archive.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
档案文件
maven汇编插件
2.2-β-2
集成测试
单一的
src/main/assembly/archive.xml
程序集描述符如下所示:
<assembly>
<id>archive</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}/appassembler</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<!-- add any other filesets to include docs, readmes, licences etc here -->
</assembly>
档案文件
拉链
${project.build.directory}/appassembler
/
这正是我想要的。我对它与集成测试阶段的绑定感到有点困惑,但我找到了答案:mvn集成测试-P存档谢谢!如果您运行mvn安装,集成测试阶段也将被执行。它只需要在打包后进行,以确保在打包应用程序之前构建jar老化。所以mvn安装-Parchive也可以。顺便问一下,为什么要排除组装阶段?如果激活,它不会生成bat文件——只复制LIB(忽略对文件夹名称的覆盖,但将其放平,这很奇怪)。我将其切换为仅汇编以获得正确的设置…这是一个复制粘贴错误。在我的应用程序中,我有自己的批处理文件要使用,而不是生成的批处理文件。我将更新帖子,谢谢。啊,谢谢你的帮助。我想我只是不明白我应该使用什么插件。此信息+Rich正是我想要的。比ks。