这个想法是像往常一样运行“mvn package”,并且在完成所有步骤之后,应该调用一个 Jar 实用程序,将打包代码(jar 或 war 文件)的文件路径作为参数传递。
该实用程序将从命令行调用如下:
java -jar Utility.jar -filepath {新 jar/war 文件的路径}
我想将最后一步集成到构建过程中。如何修改 pom.xml 文件以完成此操作?
看看maven exec 插件。您可以将它的执行绑定到包阶段(将在打包定义的内置绑定之后运行)以使用参数“-jar Utility.jar -filepath ${project.build.directory”运行 java(可执行文件) }/${project.artifactId}-${project.version}-${project.packaging}" 结果看起来像这样:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>run jar utility</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>Utility.jar</argument>
<argument>-filepath</argument>
<argument>${project.build.directory}/${project.build.finalName}.${project.packaging}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
尽管此调用将是特定于平台的。您可以对此进行一些改进并使用“java”而不是“exec”(您需要在该 Utility.jar 中提供主类名称)
如果您描述了您计划使用的实用程序的用途,则可能有一种更跨平台的方式来做到这一点(例如maven antrun 插件)
这是从@radai 建议的运行 exec-maven-plugin 的另一种方法。如果你可以这样做,我推荐它。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<inherited>false</inherited>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<!--I don't want my project's dependencies in the classpath-->
<includeProjectDependencies>false</includeProjectDependencies>
<!--Just include the dependencies that this plugin needs. IE: the Utility dependencies-->
<includePluginDependencies>true</includePluginDependencies>
<executableDependency>
<groupId>com.utility</groupId>
<artifactId>Utility</artifactId>
</executableDependency>
<mainClass>com.utility.MyMainClass</mainClass>
<!--You may be able to use a variable substitution for pathToJarFile. Try it and see-->
<commandlineArgs>-filepath pathToJarFile</commandlineArgs>
</configuration>
<dependencies>
<dependency>
<groupId>com.utility</groupId>
<artifactId>Utility</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>