当前位置: 首页 > 知识库问答 >
问题:

在maven构建的EAR中绑定文件

松景铄
2023-03-14

我需要将文件从位置\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构建成功了。目标是将\MainProject\src\non-packaged资源中存在的文件绑定到构建maven项目的所有ear(sub-project1.ear,sub-project2.ear)。首先,我只想在sub-project2-web中测试这一点。请建议如何根据此要求提供正确的路径。我使用的是maven 2.2.1版本(项目就是基于此构建的)

共有2个答案

姜旭
2023-03-14

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

<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>
姚麒
2023-03-14

参照项目基目录定义路径,如下所示。

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

然后将其添加到pom中。maven资源插件中的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>
 类似资料:
  • 在 jenkins 上执行 mvn 安装时,我收到此错误: [JENKINS]存档已禁用,等待JENKINS完成数据收集mavenExecutionResult异常非空消息:未能执行目标org.apache.maven.plugins:maven ear插件:2.9:ear(默认ear)在项目proj上ear:无法复制目录:/var/lib/JENKINS/jobs/proj/workspace/

  • 问题内容: 有一个以前具有JAR打包类型的Maven项目。现在,该项目已经发展起来,需要将它构建为EAR,包括JAR属性及其依赖项。 这是否一定意味着我必须引入第二种带EAR封装的POM?是否可以从单个Maven项目构建JAR + EAR?其背后的原因是,我真的不希望从根本上重组我的存储库结构。 如果不可能,我想我需要以某种方式重组项目结构以利用Maven模块。在这种情况下,您会建议什么样的(子)

  • 问题内容: 我正在考虑将我用Eclipse编写的Web服务部署到EAR文件。我可以将其导出为WAR,并很好地将其部署在Tomcat上,但是最终产品将不在Tomcat上,也不会是WAR文件。我需要将Websphere用作服务器,我可以访问它并可以部署有效的EAR文件……如果我要部署EAR文件。 简而言之,我如何从Eclipse中的Dynamic Web Project导出EAR文件? 问题答案: 您

  • 我在maven项目中得到了以下错误。我在看视频教程。并且maven文件相当简单。 下面是maven文件。 在stackoverflow的另一篇文章中有一篇关于文件格式的文章,因此我也将文件格式更改为utf-8。 任何解决这个问题的建议都会很有帮助。谢谢!

  • 詹金斯的新成员。 目前,我们使用maven和Subversion作为SCM进行手动构建: > 在本地工作副本文件夹中,POM文件有1.1.1-SNAPSHOT,issue mvn release:clean release:prepare-p all modules 这将创建一个标记https://avn/path/to/tag/xxx-1.1.1,而我的本地工作副本仍在1.1.2-SNAPSHO

  • 问题内容: 可以说我的模块结构如下 现在要给客户端发消息,我需要构建所有模块,因为我正在加载上述所有模块的罐子,以最终发动客户端 并且所有jar都组装在模块部署中。 我的问题是,例如,如果我更改了服务中的任何内容,那么从运行构建时是否有办法可以识别出它只能构建,因此可以构建并将其部署到deploy文件夹中? 问题答案: 如果您正在使用SVN和* nix,请从根模块