有条件地建造Maven肥胖罐子

时间:2013-08-28 06:04:55

标签: java maven jar uberjar

我按照Building a fat jar using maven中的示例进行操作,现在我可以运行以下内容来构建/测试并安装我的jar。

mvn clean compile install

然而,install现在需要更长的时间,因为我们现在正在制作一个胖罐。是否有可能有两个版本的安装,其中一个只是构建没有依赖关系的jar,另一个是这样做,另外构建胖jar,如:

mvn clean compile install
mvn clean compile install-fatjar

我知道install-fatjar不是一个有效的阶段,只是想知道我想要完成的事情,即只有在提供选项时才建立胖jar的条件安装。

2 个答案:

答案 0 :(得分:4)

为胖jar创建一个配置文件并配置maven程序集插件以在此配置文件中创建胖jar。

例如,使用此个人资料:

<profiles>
    <profile>
        <id>fatjar</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>fully.qualified.MainClass</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>       
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

然后你可以通过激活个人资料来构建它

mvn -P fatjar clean install

其中fatjar是个人资料ID。

也可以激活多个配置文件

mvn -P fatjar,release install

答案 1 :(得分:1)

通常我们不使用fat-jar(或uber-jar)作为主要工件。

您可以使用Assembly或Shade插件来创建工件的变体(使用不同的分类器),这是一个超级jar。

强烈建议您仍保留“正常”工件。如果你只想偶尔使用uber-jar,可以在配置文件中使用assembly / shade插件创建“uber-jar”,并随时激活配置文件。然而,这仍然会产生一个“额外的”超级罐,而不是让你的主要神器成为超级罐。