Java Maven-如何定制依赖项的构建?
我有一个多模块maven项目,如下所示:Java Maven-如何定制依赖项的构建?,java,maven,build,m2eclipse,eclipse-wtp,Java,Maven,Build,M2eclipse,Eclipse Wtp,我有一个多模块maven项目,如下所示: project project-core project-webapp projectcore是projectwebapp的依赖项。在构建项目核心时,我从最终jar中排除了一些元素。当我使用maven(通过m2eclipse)构建和部署整个项目时,一切都很好 但是,如果使用WTP构建和部署,将跳过资源筛选 到目前为止,我找到的唯一解决办法是从m2eclipse禁用工作区解析。这样,WTP就用maven构建的jar构建了最终的战争。这种解决方法的
project
project-core
project-webapp
projectcore
是projectwebapp
的依赖项。在构建项目核心时,我从最终jar中排除了一些元素。当我使用maven(通过m2eclipse)构建和部署整个项目时,一切都很好
但是,如果使用WTP构建和部署,将跳过资源筛选
到目前为止,我找到的唯一解决办法是从m2eclipse禁用工作区解析。这样,WTP就用maven构建的jar构建了最终的战争。这种解决方法的主要缺点是每次修改projectcore
源代码时都必须安装、更新project
如何强制WTP从项目核心中筛选出资源
project/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>
<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>
我的猜测是,WTP不会执行实际的jar构建,而是使用可用资源(可能是在target中)
从jar中排除一些文件是不常见的。您可以从前面的阶段(流程资源?)中排除这些文件,或者,如果您只需要这些文件进行单元测试,请在测试中移动它们
这真的取决于您决定将它们从jar中排除的原因(您必须有一个很好的理由,但知道原因会有所帮助)。您能显示完整的pom文件吗?@khmarbaise检查我的更新我试图通过eclipse将这些文件(位于src/main/resources中)从目标
目录中排除,但没有成功。文件仍然到达目标目录。我可以将这些文件移出或src/main/resources,但我非常不喜欢这种解决方案,因为这些文件都是真正的资源,而且它们都位于src/main/resources中。实际上,这些文件是生产环境的示例配置文件。它们在src/test/resources中已经有了对应的文件,它们的特殊值仅用于测试目的。如果您的文件是真正的资源,但不是任何构建或过程的一部分(即出于文档目的),则可以通过以下方式排除它们:在我的项目中,此类生产示例不在src/main/resources下。我只在那里放置构建过程中需要的文件,或者运行时需要的文件。我已经这样做了,请检查我的pom。但是WTP不关心这个。我在你的POM中看不到任何东西,除了构建早期阶段的文件。它们被排除在归档(jar)准备之外。但这太晚了,资源插件会将它们复制到目标中。