Java 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构建了最终的战争。这种解决方法的

我有一个多模块maven项目,如下所示:

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)准备之外。但这太晚了,资源插件会将它们复制到目标中。