除了主神器jar之外,还要生成另一个带有一些依赖关系的jar,而不是全部,以便在Maven之外进行分发

时间:2011-10-06 13:39:23

标签: java maven-2 maven

我知道使用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示例呢。 :)

3 个答案:

答案 0 :(得分:2)

看看maven-assembly-plugin。您可以将其配置为创建包含项目的所有依赖项的JAR以及项目的源代码。然后,您可以将插件的执行绑定到包阶段,因此这个mega-jar是作为常规生命周期的一部分构建的。

答案 1 :(得分:0)

不确定包含在生成的罐子中的罐子是什么意思,但你有几种选择可以使用。

首先,您可以使用Maven dependency plugin获取依赖关系,然后使用Maven assembly plugin生成一个包。

或者,您可以使用Maven Shade pluginMaven 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 packagemvn install并查找项目jar之外的zip文件。