我目前正在使用jar-with-dependencies程序集创建这样的jar。但是,我的罐子的名称有点长。
由于AS400上的RPG程序正在使用此jar,因此我想缩短它,以使这些开发人员的工作更加轻松。但是,除了手工之外,我还没有找到一种方法来从通常的罐子中重命名罐子project- name-version-classifier-jar-with-dependencies.jar
。我想要类似的东西project-name- version-classifier-full.jar
无论如何,在没有基本复制jar-with-dependencies程序集描述符并将其完全调用的情况下执行此操作吗?
另外,我想继续将没有组装的类路径的jar存储在存储库中。
我需要两个工件。带有我的分类器的罐子保存构建所针对的区域。具有所有依赖项的jar,其中还包括区域。
project-name-version-region-full.jar
并project-name-version- region.jar
应存储在存储库中。在第一个示例中,分类器是全区域的,在第二个示例中是区域。后者正在工作。
您可以指定 finalName 属性,以为jar提供所需的名称,并指定 appendAssemblyId 为false,以避免后缀“ jar-
with-dependencies”。
下面的配置将输出一个名为“ test.jar”的jar
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
更新:根据您的评论,使用内置描述符将不起作用。我认为这归结于最新版本的Assembly-Plug中的一个错误-
他们已经删除了对分类器的支持,但是如果您使用内置描述符,则ID是固定的,因此您会以一个笨拙的名字结尾。
解决方法是,您可以复制jar-with-dependencies描述符使用的程序集描述符并修改ID。
此示例将导致程序集ID附加到finalName,因此,如果您需要使用名称 region-full.jar ,则可以将finalName指定为
region, 而将程序集ID指定为 full 。这将在目标中生成一个名为region-
full.jar的文件,但请注意,该文件仍将作为附加工件安装到Maven存储库,其中 full
用作分类器。只要此ID与您的其他程序集的ID不同,就不会发生碰撞。
pom配置如下所示。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/jar-assembly.xml</descriptor>
</descriptors>
<finalName>region</finalName>
</configuration>
</execution>
</executions>
</plugin>
和src / main / assembly中的jar-assembly.xml像这样:
<assembly>
<id>full</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
</fileSet>
</fileSets>
</assembly>
问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:
问题内容: 可以运行以了解模块任务的依赖性。有没有办法找到 buildscript依赖 的 传递依赖 ? 示例: 直接取决于: 可以在MVNRepository上看到。但是,这些工件有其自己的依赖性。有没有找到方法而无需手动遍历整个依赖树的方法? 为了澄清起见,我正在谈论的类路径由以下方式定义: 问题答案: 您可以使用以下命令: Udacity提供了很棒的Android Gradle 教程,但是您
我有一个mvn项目,它包含对apache Commons-Lang3的依赖。我设法为这个jar文件生成了一个manifest.mf,它通过我的远程服务器上的java-jar.jar启动。然而,它不包括任何依赖项,我不知道为什么。 您可以看到,它正确地将依赖关系解析为commons-lang并将其放入清单中。但实际文件不见了。 有人知道为什么吗?
是否有maven插件可以验证可传递依赖项的冲突版本,确保我不依赖同一工件的不同版本? 理想情况下,我将连接到生命周期,如果我同时导入依赖项A的版本X和Y,它将无法构建。
我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存
问题内容: 我知道这不是“最佳实践”,但是我可以将所有依赖项包含在一个大罐子中吗? 问题答案: 有一个名为One-Jar的实用程序可以满足您的需求,尽管我建议您不要这样做。表演通常很糟糕。