0

我有一个这样的多模块 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>
4

1 回答 1

1

我的猜测是 WTP 不执行实际的 jar 构建,而是使用可用资源(可能在目标中)。

从 jar 中排除某些文件是不常见的。您可以从前面的阶段(流程资源?)中排除这些文件,或者,如果您只需要这些文件进行单元测试,请将它们移动到测试中。

这真的取决于您为什么决定将它们从 jar 中排除(您必须有充分的理由,但知道原因会有所帮助)。

于 2013-09-24T14:32:00.130 回答