我知道使用Maven的用户不应该关心依赖关系,因为Maven将按照pom中的指定下载它们。但是我想向非maven用户分发另一个jar。所以我仍然想为Maven生成原始jar,没问题。但是我也希望有能力生成另一个jar,其中包含一些依赖项。通过一些依赖关系,我的意思是我将选择pom.xml中定义的一些依赖项,并将它们包含在我将自己分发的另一个jar中。
因此,假设我的pom.xml中有10个依赖项。 dep1.jar,dep2.jar,...,dep10.jar。
当然,生成用于与MAVEN一起分发的主jar将不具有任何这些依赖性。但我希望能够以dep3.jar和dep4.jar包含的方式以某种方式生成另一个jar。
任何帮助都将受到高度赞赏!
编辑:将我导入maven插件无济于事。但是给我一个pom.xml示例呢。 :)
答案 0 :(得分:2)
看看maven-assembly-plugin。您可以将其配置为创建包含项目的所有依赖项的JAR以及项目的源代码。然后,您可以将插件的执行绑定到包阶段,因此这个mega-jar是作为常规生命周期的一部分构建的。
答案 1 :(得分:0)
不确定包含在生成的罐子中的罐子是什么意思,但你有几种选择可以使用。
首先,您可以使用Maven dependency plugin获取依赖关系,然后使用Maven assembly plugin生成一个包。
或者,您可以使用Maven Shade plugin或Maven JarJar plugin将多个jar合并为一个。
答案 2 :(得分:0)
@matt b已经回答了这个问题,但是既然你想要代码片段就行了。这是一种方法。
创建一个文件,在assemblyDescriptor.xml
文件夹中说src/main/assembly
,如下所示:
<assembly>
<id>distribution</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>/my-distribution</outputDirectory>
<includes>
<include>group3:dep3</include>
<include>group6:dep6</include>
...
</includes>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
如果在<profile>
部分中需要条件调用,请在您的pom中指定以下插件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assemblyDescriptor.xml</descriptor>
</descriptors>
</configuration>
</plugin>
运行mvn package
或mvn install
并查找项目jar之外的zip文件。