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

Maven:无法将资源复制到远程目录

薛弘济
2023-03-14

我正在使用:

  • openjdk版本“11.0.1”2018-10-16
  • Apache Maven 3.6.0来构建我的项目。

期望从我编译的服务器复制3个资源文件到复制资源文件的服务器。预期方式:

  • 从本地目标/类/env/${current_env}复制context.xml /online/sand/pps/apache-tomcat-9.0.8/webapps/pps/META-INF_context.xml
  • 从本地目标/类/env/${current_env}复制application.properties /online/sand/pps/apache-tomcat-9.0.8/webapps/pps/WEB-INF/classes_application.properties
  • 从本地目标/类/env/${current_env}复制promote_servers.properties /online/sand/pps/apache-tomcat-9.0.8/webapps/pps/WEB-INF/classes_promote_servers.properties

因此,我在pom.xml设置了个人资料:

<profile>
    <id>dev</id>
    <activation/>
    <properties>
        <INSTALL_MACHINE_LIST>dc1uoappptl01.patamoc-us.com</INSTALL_MACHINE_LIST>
        <COPY_MODE>sftp</COPY_MODE>
        <FTP_USERNAME>theusr</FTP_USERNAME>
        <FTP_PASSWORD>pswd</FTP_PASSWORD>
        <project_lib>/online/sand/pps/apache-tomcat-9.0.8/webapps</project_lib>
    </properties>
</profile>

要复制资源,我使用了:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>install</phase>
            <configuration>
                <target>
                    <copy file="${project.build.directory}/classes/env/${current_env}_context.xml"
                          tofile="${project_lib}/pps/META-INF/context.xml"
                          overwrite="true"/>
                    <copy file="${project.build.directory}/classes/env/${current_env}_application.properties"
                          tofile="${project_lib}/pps/WEB-INF/classes/application.properties"
                          overwrite="true"/>
                    <copy file="${project.build.directory}/classes/env/${current_env}_promote_servers.properties"
                          tofile="${project_lib}/pps/WEB-INF/classes/promote_servers.properties"
                          overwrite="true"/>
                </target>

            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我的war文件正在stfp到正确的位置。但是,资源文件不是。我已经检查了应该复制文件的远程目录中的目录权限。maven安装的日志文件表明,资源已复制到上述目录,安装成功。

你知道我错过了什么吗?我应该为资源复制部分使用不同的插件吗?

共有1个答案

澹台臻
2023-03-14

我的第一个猜测是,复制文件的生命周期阶段太迟了(或者刚好在实际资源的sftp之后),但要证明您还应该发布复制sftp的目标。

您可以尝试简单地更改

<executions>
        <execution>
            <phase>install</phase>

<executions>
        <execution>
            <phase>package</phase>

所以它还处于早期阶段...看https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

 类似资料:
  • 我目前正在处理一个现有的项目,该项目有一个具有以下内容的pom.xml文件: 我尝试了这个,但似乎不起作用: 谢谢你的帮助。

  • 我使用maven远程资源插件从工件中获取一些资源,还需要捆绑一些资源以用于另一个项目。 我在默认部分(不在配置文件中)将maven-Remote te-resources-plugin绑定到捆绑目标。我将maven-Remote te-resources-plugin绑定到配置文件中的流程目标。 我的问题是,在使用概要文件时,我没有获得共享资源(我没有获得target\maven shared a

  • Maven资源插件: 此目标要求配置要复制的资源,并指定OutputDirectory。 使用maven将中的两个(或更多)外部资源目录复制到构建输出目录(请参见和)。 下面是复制单个目录的示例:

  • 问题内容: 在Maven的资源插件: 此目标要求您配置要复制的资源,并指定outputDirectory。 使用maven 将内的两个(或多个)外部资源目录复制到构建输出目录(请参阅和)。 例如,给定上面复制的目录结构,并使用maven到目标目录。复制一个或另一个很容易,但是,该插件仅接受一个outputDirectory。如果将目录和两个目录都指定为资源,则每个目录的内容将被复制到目录,而不是目

  • 问题内容: 我该如何告诉Maven对无法在其中找到依赖项的存储库隐藏“无法找到资源” INFO消息,但显示那些确实找到依赖项的存储库呢?也就是说,显示匹配,但忽略未命中,因为这些淹没并模糊了匹配。 例如,代替此输出: 我希望Maven仅输出以下内容: 问题答案: 我不知道从Maven内部做什么,但是您总是可以将输出通过管道传递给grep或sed之类的进程,以删除每个模式的行数。

  • 我有一个maven项目,安装了m2eclipse。当我构建项目时,src/main/resources中的文件不会被复制到target/classes文件夹中。非常感谢您的帮助。