【问题标题】:Bind a file inside a maven built EAR在 Maven 构建的 EAR 中绑定文件
【发布时间】:2019-06-04 22:54:48
【问题描述】:

下面是我的项目结构。

在构建 MainProject 时,我需要将文件从位置 \MainProject\src\non-packaged-resources 复制到 \MainProject\sub-project2\sub-project2-web\src\main\resources 位置。 下面是我的 sub-project2-web 的 pom 文件的构建部分,但是在构建时没有复制该文件。

    <build>
    <finalName>sub-project2-web</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <warSourceExcludes>**/.copyarea.db</warSourceExcludes>
                <packagingExcludes>**/.copyarea.db</packagingExcludes>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <!-- here the phase you need -->
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>/src/main/resources</outputDirectory>
                        <resources>
                            <resource>
                                <directory>/src/non-packaged-resources</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

当观察构建日志时,它会跳过正在复制的文件并出现以下错误

skip non existing resourceDirectory

但是 Maven 构建成功了。 目标是在构建 maven 项目时将存在于 \MainProject\src\non-packaged-resources 中的文件绑定到所有耳朵(sub-project1.ear,sub-project2.ear)。首先,我试图仅在 sub-project2-web 中对此进行测试。 请就如何根据此要求提供正确路径提出建议。 我用的是maven 2.2.1版本(项目就是建立在这个之上的)

【问题讨论】:

    标签: java maven maven-2 maven-plugin maven-resources-plugin


    【解决方案1】:

    参考您的项目基目录定义路径,如下所示。

    <outputDirectory>${project.basedir}/sub-project2/sub-project2-web/src/main/resources</outputDirectory>
    

    <directory>${project.basedir}/src/non-packaged-resources</directory>
    

    然后将其添加到maven-resources-plugin中的pom.xml文件中。

    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <executions>
            <execution>
                <id>copy-resources</id>
                <!-- here the phase you need -->
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.basedir}/sub-project2/sub-project2-web/src/main/resources</outputDirectory>
                    <resources>
                        <resource>
                            <directory>${project.basedir}/src/non-packaged-resources</directory>
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

    • 非常感谢您的提醒。根据您的回答,我想到了如何跟踪父目录。我的回答如下。
    • 太好了,等着看你的答案。
    【解决方案2】:

    根据上述答案,我找到了获取父目录和基本目录位置的正确方法。下面对我有用。

    <build>
    <finalName>sub-project2-web</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <warSourceExcludes>**/.copyarea.db</warSourceExcludes>
                <packagingExcludes>**/.copyarea.db</packagingExcludes>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <!-- here the phase you need -->
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>                         
                        <outputDirectory>${project.basedir}/src/main/resources</outputDirectory>
                        <resources>
                            <resource>                      
                                <directory>${project.parent.parent.basedir}/src/non-packaged-resources</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多