我有一个像这样的多模块maven项目:
project
project-core
project-webapp
project-core
是project-webapp
的依赖关系。在构建project-core
时,我从最终的jar中排除了一些元素。当我用maven构建和部署整个项目时(通过m2eclipse),一切都很好。
但是,如果我使用WTP构建和部署,则会跳过资源过滤。
到目前为止,我发现的唯一工作是禁用m2eclipse的工作空间分辨率。这样,WTP用maven构建的jar建立了最后的战争。此解决方法的主要缺点是每次修改project-core
源代码时都必须安装,更新项目。
如何强制WTP过滤掉project-core
中的资源?
项目/项目核/ pom.xml的
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>project</artifactId>
<groupId>com.company.project</groupId>
<version>1.0.0</version>
</parent>
<artifactId>project-core</artifactId>
<name>project-core</name>
<version>${version.project}</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
// (huge) dependencies list ...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<excludes>
<exclude>file.properties</exclude>
<exclude>DIR/file.xml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
// repositories ...
</repositories>
</project>
修改
但是,如果我使用WTP构建和部署,则会跳过资源过滤。
实际上我没有在正确的阶段进行过滤。资源仅在jar构建期间被过滤。感谢@Samuel EUSTACHI,我将资源复制到target
文件夹时立即过滤。我是怎么做到的:
项目/项目核/ pom.xml的
<build>
<!--
I removed completely the plugins node and
replace it with the resources node
-->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>file.properties</exclude>
<exclude>DIR/file.xml</exclude>
</excludes>
</resource>
</resources>
</build>
答案 0 :(得分:1)
我的猜测是WTP不执行实际的jar构建,而是使用可用资源(可能在目标中)。
从jar中排除一些文件并不常见。您可以从前面的阶段(process-resources?)中排除这些文件,或者,如果您只需要这些文件进行单元测试,请在测试中移动它们。
这真的取决于你为什么决定将它们从罐子里排除(你必须有充分的理由,但这有助于了解原因)。