与maven包装战争文件

时间:2013-05-14 17:14:03

标签: java java-ee maven maven-3 war

我认为,如果我的项目名为my-web-application,那么当我调用mvn clean install时,maven首先编译到target\my-web-application-1.0文件夹,而不是将该文件夹“拉链”到my-web-application -1.0.war ...

但是,正如我最近发现的那样,它(可能只是默认设置)不起作用。

我正在使用一些第三方组件,我想修改这些组件的一些样式(.css)和行为(.js),所以我只需用我的修改替换依赖jar中的内容

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

执行示例如下(它将org文件夹压缩到componentToModify.jar)

<execution>
    <id>fix</id>
    <phase>package</phase>
    <configuration>
        <executable>jar</executable>
        <workingDirectory>${basedir}</workingDirectory>
        <arguments>
            <argument>-uvf</argument>
            <argument>target/${project.artifactId}-${project.version}/WEB-INF/lib/componentToModify.jar</argument>
            <argument>org</argument>
        </arguments>
    </configuration>
    <goals>
        <goal>exec</goal>
    </goals>
</execution>

正确修改target\my-web-application-1.0中的componentToModify.jar,但最终战争不包含修改。似乎libs从本地存储库中被压缩为战争。

这种行为是否有某种原因,我可以以某种方式改变它吗?

1 个答案:

答案 0 :(得分:0)

不完全肯定,但会在这里使用叠加帮助吗?

http://maven.apache.org/plugins/maven-war-plugin/overlays.html

如果所有其他方法都失败了,您可能只想修改第三方应用程序并根据您的更改生成自己的jar。