如何使用Maven WAR overlay来扩展另一个项目的WAR?

时间:2014-11-19 12:56:29

标签: java maven war

我试图在项目中包含WAR,以扩展它,类似于问题How to extend/customize a WAR with another project。据我所知,这个answer(使用Maven WAR覆盖)似乎是我项目的正确选择。但是,我无法弄清楚如何让它发挥作用。

我在我的pom.xml中包含了Maven WAR插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
</plugin>

并将WAR添加为依赖项(本地存储库):

<dependency>
    <groupId>nl.surfnet.apis</groupId>
    <artifactId>apis-authorization-server-war</artifactId>
    <version>1.3.6-SNAPSHOT</version>
    <type>war</type>
</dependency>

当我现在编译和部署应用程序时,一切正常,父项目按原样部署。我只需要包含一个.properties文件,该文件不包含在WAR中,您可以在其中插入自己的类来覆盖项目的默认行为。

现在我想扩展一个类,添加一些自定义行为,但我无法弄清楚如何做到这一点。我的问题是,我甚至不能包括我想要扩展的类。据我所知,WARs不被认为包含在另一个项目中,因为它们旨在发布到容器服务器。但是,WAR Overlay插件是不是认为能够为您提供这种功能呢?

然后我发现Warpath plugin听起来就像我想要的那样:&#34;使用包含在war artifact / WEB-INF / classes目录中的类进行开发,方法是将它们包含在项目类路径中。 #34;

添加插件:

<plugin>
    <groupId>org.appfuse</groupId>
    <artifactId>maven-warpath-plugin</artifactId>
    <version>2.0.2</version>
    <extensions>true</extensions>
    <executions>
        <execution>
            <goals>
                <goal>add-classes</goal>
            </goals>
        </execution>
    </executions>
</plugin>

和第二个依赖项(类型warpath),如插件文档中所述:

<dependency>
    <groupId>nl.surfnet.apis</groupId>
    <artifactId>apis-authorization-server-war</artifactId>
    <version>1.3.6-SNAPSHOT</version>
    <type>warpath</type>
</dependency>

然而,包括课程在内,似乎并没有起作用。 Netbeans告诉我,我尝试导入的包不存在。

奇怪的是,我现在可以部署我的项目,只要我不尝试使用我的新类,即使我在该类中引入语法错误,也可以正常工作。该课程似乎甚至不再被编译。

为了确保问题不是由于我试图扩展的项目,我写了两个新的最小测试项目,其中一个扩展另一个。我再次得到了相同的行为。我没有在这里包含这些项目,因为代码与上面提供的代码相同,只有另一个groupIdartifactId

0 个答案:

没有答案