使用Maven执行jar命令

时间:2013-09-10 09:25:00

标签: maven maven-2 maven-3 maven-plugin

我需要运行

jar -cvf myapp.war *
使用Maven构建的

命令,我有一个项目'myapp'。目前我有一些shell脚本来构建war文件。

cd /something/myapp
jar -cvf myapp.war *

它生成myapp.war文件,不关心Web应用程序文件夹结构(它已经在Web应用程序文件夹结构中)。

我想用Maven pom而不是shell脚本,但我想用Maven运行相同的命令。

3 个答案:

答案 0 :(得分:1)

你应该看看这个maven插件:

http://mojo.codehaus.org/exec-maven-plugin/usage.html

<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>

它允许您在构建生命周期中执行系统和Java程序。

根据您的需要,您可以使用exec:java goal。

您还可以实现一个简单的Maven插件(Mojo类),从您的jar中调用所需的方法。

答案 1 :(得分:1)

将项目的<packaging>更改为war并使用maven-war-plugin。 Maven为不同的包装类型提供不同的插件。如果您计划从一个项目中生成多个工件,也可以尝试maven-assembly-plugin

答案 2 :(得分:0)

我得到了解决方案:

  1. 请勿为此pom指定\<packaging\>\</packaging\>

  2. 如果已在<plugins>中定义,请添加以下代码并删除所有maven-war或maven-jar插件。

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>export_objects</id>
                        <phase>install</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <executable>jar</executable>
                    <commandlineArgs> -cvf myapp.war *</commandlineArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>