我目前正在使用jar-with-dependencies程序集来创建这样一个jar . 但是,我的 jar 的名字有点长 .
由于这个jar正被AS400上的RPG程序使用,我没有找到一种方法来重命名jar通常的 project-name-version-classifier-jar-with-dependencies.jar
. 我喜欢像 project-name-version-classifier-full.jar
这样的东西
反正有没有基本上复制jar-with-dependencies程序集描述符并将其调用为满?
另外,我想继续让jar没有存储在存储库中的类路径组装 .
我需要两个文物 . 我的分类器的jar包含构建所在的区域 . 包含所有依赖关系的jar,也包括该区域 .
project-name-version-region-full.jar
和 project-name-version-region.jar
应存储在存储库中 . 在第一个例子中,分类器是区域满的,在第二个区域 . 后者正在发挥作用 .
5 回答
您可以指定finalName属性以为jar提供所需的名称,并指定appendAssemblyId应为false以避免"jar-with-dependencies"后缀 .
下面的配置将输出一个名为“test.jar”的jar
更新:根据您的评论,使用内置描述符将无法正常工作 . 我相信这是最近版本的程序集插件中的一个错误 - 他们已经删除了对分类器的支持,但是如果你使用内置的描述符,id就会被修复,所以你最终会得到一个很大的愚蠢名称 .
作为解决方法,您可以复制jar-with-dependencies描述符使用的程序集描述符并修改id .
此示例将导致程序集ID附加到finalName,因此如果您需要名称为region-full.jar,则可以将finalName指定为region,将程序集ID指定为full . 这将导致目标中的文件名为region-full.jar,但请注意,它仍将作为附加工件安装到Maven存储库,并完全用作分类器 . 只要这个id与你的其他程序集不同,就应该没有碰撞 .
pom配置看起来像这样 .
和src / main / assembly中的jar-assembly.xml如下:
我想我已经找到了一种直接在pom中配置它的方法,而不需要单独的jar-assembly.xml .
它与Rich的答案基本相同,除了使用artifactId和version指定finalName .
感谢这里的帖子以及maven docs中的一些挖掘,我已经为具有自定义名称的一般一次性重新包装的可执行jar程序集提出了以下配置 .
在pom.xml中:
在assembly.xml中:
这将生成
MyJarName.jar
,其所有依赖项重新打包到同一个jar和指定的Main-Class: karlthepagain.MyMain
中 .我要给予Rich以使我指向正确方向的信誉,但是想要发布对我有用的解决方案,因为Rich稍微偏离了:
我的jar-assembly.xml看起来像这样,允许在我的配置文件中存储为属性的区域更改程序集ID:
我没有在maven-assembly-plugin设置中使用finalName参数,因为这使用我的project-name-version-env-full.jar名称构建了我的项目,其中env-full是分类器 .
想象一下,当我了解到程序集xml可以通过构建中的项进行参数化时,我会感到惊讶 . 这正是我想要的 .
这对我有用