我使用程序集插件创建了几个包含一些类的jar。我需要为生成的jar发布自定义名称: app_business.jar app_gui.jar core.jar 等。
目前我必须进行以下配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>app_business</finalName>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
assembly.xml文件:
<assembly>
<id>app_business</id>
<formats>
<format>jar</format>
</formats>
<baseDirectory>target</baseDirectory>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>org/xyz/**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
这会创建一个文件 app_business.jar ,这是完美的。但我不知道如何创建我的其他文件。选项 appendAssemblyId 对我没有帮助,因为它以AppName-app_business.jar格式创建文件名。我真的需要确切的文件名 app_business.jar 。
任何想法?非常感谢你!
答案 0 :(得分:39)
您可以将配置元素移动到插件声明的执行元素下面。这意味着配置将仅应用于该执行。然后,您可以为其他程序集添加程序集插件的其他执行。
以下是具有两个执行的修改配置的示例,每个执行引用不同的程序集:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-business-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>app_business</finalName>
<descriptors>
<descriptor>src/main/assembly/business-assembly.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
<execution>
<id>make-gui-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>app_gui</finalName>
<descriptors>
<descriptor>src/main/assembly/gui-assembly.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
</executions>
</plugin>
使用此配置,将在目标目录中创建另外两个jar(app _business.jar和app _gui.jar),但是请注意,如果安装项目,则只安装最后组装的工件(这可能是当然是个问题)。
要避免这种情况,您需要将appendAssemblyId属性更改为 true 。在这种情况下,您可以获得的最接近的是将finalNames更改为“app”,将ID更改为“gui”和“business”,从而打包app-gui.jar和app-business.jar并安装所有工件。
答案 1 :(得分:-1)
标准maven插件适用于一般的重复性工作。他们从POM收集所有信息并且它们很聪明(从某种意义上说,您不需要配置太多)。
如果您需要特殊任务,我建议使用ant plugin,它允许您在POM中嵌入一段Ant代码。这允许您运行jar task。