gpt4 book ai didi

java - 使用额外的非必要文件和批处理文件构建基于非 webapp maven2 的项目

转载 作者:行者123 更新时间:2023-12-03 22:55:26 26 4
gpt4 key购买 nike

我刚刚开始掌握 maven2 的设置,同时移植了我的一个简单项目。我已经浏览了 package command line example on the Sonatype web site但我对如何扩展和更改该项目的包装感到有点困惑。我试图找到有关此主题的更多信息,但我认为我要么对问题的思考有误,要么对搜索的措辞有误。

本质上,我想构建一个项目,它是所有依赖 jar 的 zip、主 jar 本身、为了方便启动它的批处理脚本以及应用程序的其他各种文件(如属性文件或其他东西)。但是,我不希望这些都捆绑到 jar 里。我只想拥有一个项目的压缩存档构建,其中包含所有 jar 的 lib 目录,包含属性文件和批处理脚本的根目录以及用于保存额外的非必要文件的子文件夹。有点像:

  • 示例项目.zip:
    • easy.bat
    • Prop .ini
      • dependent1.jar
      • dependent2.jar
      • main.jar
    • 子目录
      • someextrafile.txt

使用 maven2 构建这样的项目的正确方法是什么?我是否需要创建一个构建 zip 并将子项目作为模块包含在内的父项目?这将只是一个不需要多模块的简单项目...

最佳答案

基于 matt b 的回答。下面是一些如何使用引用插件的示例。请注意,执行绑定(bind)到集成测试阶段,以确保在尝试打包之前已创建 jar。

appassembler-maven-plugin会生成batch/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>

assembly plugin可用于将 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>

程序集描述符看起来像这样:

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

关于java - 使用额外的非必要文件和批处理文件构建基于非 webapp maven2 的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com