我有一个非常具体的问题。 我创建了一个 web 应用程序,并希望除了 web war 之外还有一个类的 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 的执行来扩展配置,在本地安装它并将其部署到远程存储库,但这有点困惑。
欢迎任何帮助。
最佳答案
实现此目的的一种方法是将 Java 源代码移动到一个单独的项目,然后将其作为依赖项包含在 WAR 项目中。这样,您就可以控制 JAR 文件中的内容,并且可以将其他文件保留在 WAR 项目中、应用过滤等。
我发现将功能分离为细粒度的项目通常是解决问题的最佳方法,而不是设置多个具有复杂配置的插件来执行相同的操作。如果需要复杂的设置,则可能是错误的方法。尽量保持简单:-)
关于web-applications - Maven webapp - 从 web 应用程序派生的 jar 中排除 java 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9792476/