2012-03-20 79 views
2

我有一个相当具体的问题。 我创建了一个web应用程序,并希望有一个jar版本的Web战争额外的类。 没问题,我这样做是:Maven webapp - 从webapp派生的jar中排除java资源

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
     <attachClasses>true</attachClasses> 
     </configuration> 
    </plugin> 

被同样来自的src/main /资源的资源进入瓶子里。但是由于这些资源只适用于这个Web应用程序,所以我不希望它们在jar中。我可以将它们移动到webapp src文件夹中,但是我需要对属性文件进行过滤,所以它必须是一个资源文件夹,因此可以通过war/jar构建进行包含。

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

我试图通过配置的maven-JAR-插件将它们排除在外:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <excludes> 
     <exclude>**properties</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 

工作正常通过烧杯奇异罐子构建:罐子,但不幸的是不是罐子构建由完成安装阶段。

有没有办法将这些配置应用到maven-war-plugin?

我知道我可以通过添加用于构建jar,在本地安装并将其部署到远程存储库的执行来扩展配置,但这有点搞砸了。

任何帮助,欢迎。

回答

2

执行此操作的一种方法是将Java源移至单独的项目,然后将其作为依赖项包含在WAR项目中。通过这种方式,您可以控制进入JAR文件的内容,并且可以将其他文件保留在WAR项目中,应用筛选等。

我发现将功能分离为细粒度的项目通常是解决问题的最佳方法而不是用复杂的配置设置多个插件来做同样的事情。如果需要复杂的设置,可能是错误的。尽量保持简单:-)

+0

是的。已经想过了。我想限制我的项目数量,但这样做很简单。谢谢。 – 2012-03-21 12:40:20