2

这个想法是像往常一样运行“mvn package”,并且在完成所有步骤之后,应该调用一个 Jar 实用程序,将打包代码(jar 或 war 文件)的文件路径作为参数传递。

该实用程序将从命令行调用如下:

java -jar Utility.jar -filepath {新 jar/war 文件的路径}

我想将最后一步集成到构建过程中。如何修改 pom.xml 文件以完成此操作?

4

2 回答 2

1

看看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 插件

于 2012-12-24T18:15:03.170 回答
0

这是从@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>
于 2012-12-24T20:12:26.360 回答