Maven webapp - 从webapp派生的jar中排除java资源

时间:2012-03-20 18:06:35

标签: web-applications maven resources jar war

我有一个非常具体的问题。 我创建了一个webapp,并希望除了Web战争之外还有一个jar类的jar构建。 没问题,我是这样做的:

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

此外,来自src / main / resources的资源也会进入jar。但由于这些资源仅适用于此Web应用程序,因此我不希望它们出现在jar中。我可以将它们移动到webapp src文件夹,但是我需要对属性文件进行过滤,因此它必须是一个资源文件夹,因此被war / jar构建包含在内。

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

我尝试通过配置maven-jar-plugin来排除它们:

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

适用于jar:jar的单个jar构建,但不幸的是没有安装阶段完成的jar构建。

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

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

欢迎任何帮助。

1 个答案:

答案 0 :(得分:2)

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

我发现将功能分解为细粒度项目通常是解决问题的最佳方法,而不是设置具有复杂配置的多个插件来执行相同操作。如果它需要复杂的设置,它可能是错误的方式。尽量保持简单: - )

相关问题