Maven:使用 exec 插件复制目录

发布于 2024-11-28 04:06:16 字数 1244 浏览 2 评论 0原文

我正在使用 Maven 3.0.3。我在使用 Maven exec 插件将一个目录的内容复制到另一个目录时遇到问题。遗憾的是,当我将此插件包含在我的 pom.xml 中时……

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1.1</version>
    <configuration>
        <executable>cp</executable>
        <arguments>
            <argument>-r</argument>
            <argument>web-app/*</argument>
            <argument>src/main/webapp</argument>
        </arguments>
    </configuration>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

它不起作用。我收到以下错误...

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (default-cli) on project jx: Result of /bin/sh -c cd /Users/davea/Documents/workspace/mycoUSA2/Technology/nna/myco2usa/jx && cp -r 'web-app/*' src/main/webapp execution is: '1'. -> [Help 1]

有谁知道如何修改我的插件配置以将一个目录的内容复制到另一个目录?谢谢,-戴夫

I'm using Maven 3.0.3. I'm having trouble using the Maven exec plugin to copy the contents of one directory to another. Sadly, when I include this plugin in my pom.xml …

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1.1</version>
    <configuration>
        <executable>cp</executable>
        <arguments>
            <argument>-r</argument>
            <argument>web-app/*</argument>
            <argument>src/main/webapp</argument>
        </arguments>
    </configuration>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

It isn't working. I get the error below …

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (default-cli) on project jx: Result of /bin/sh -c cd /Users/davea/Documents/workspace/mycoUSA2/Technology/nna/myco2usa/jx && cp -r 'web-app/*' src/main/webapp execution is: '1'. -> [Help 1]

Does anyone know how I can modify my plugin config to copy the contents of one directory to another? Thanks, - Dave

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

毁我热情 2024-12-05 04:06:16

如果您使用的是 bash,请尝试以下操作:

<executable>bash</executable>
<arguments>
    <argument>-c</argument>
    <argument>cp -r web-app/* src/main/webapp</argument>
</arguments>

这会生成一个新的 bash 并为其提供命令 cp -r web-app/* src/main/webapp 来执行。

您还可以通过先将其输入到普通终端窗口来测试它是否适合您:

bash -c "cp -r web-app/* src/main/webapp"

请注意," 符号确实会产生影响,因为 exec-maven-plugin 会自动插入它们,因此它们不包含在 标签中。

If you are using bash, try the following:

<executable>bash</executable>
<arguments>
    <argument>-c</argument>
    <argument>cp -r web-app/* src/main/webapp</argument>
</arguments>

This spawns a new bash and gives it the command cp -r web-app/* src/main/webapp to execute.

You can also test if it works for you by inputting this into a normal Terminal window first:

bash -c "cp -r web-app/* src/main/webapp"

Note that the " signs do make a difference as the exec-maven-plugin does insert them automatically, thus they are not included in the <argument>-tag.

我很坚强 2024-12-05 04:06:16

请注意它运行的命令。从错误输出中:

cp -r 'web-app/*' src/main/webapp

特别注意它尝试复制的 'web-app/*' 文件。因为它引用了此参数,所以 cp 命令正在 web-app 目录中查找名为 * 的特定文件。由于您没有具有此名称的文件,因此该文件已退出并显示错误代码 1

maven-resources-plugin 有一个旨在执行此任务的目标。为什么不尝试一下呢?它还有一个额外的好处,那就是使您的构建平台独立。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/src/main/web-app</outputDirectory>
                <resources>
                    <resource>
                        <directory>web-app</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Note the command it ran. From the error output:

cp -r 'web-app/*' src/main/webapp

Note in particular the 'web-app/*' file it has tried to copy. Because it has quoted this argument the cp command is looking for a specific file with the name * in the web-app directory. Because you don't have a file with this name it has exited with the error code 1.

The maven-resources-plugin has a goal designed to perform this task. Why not give it a try? It would have the added benefit of making your build platform independent.

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/src/main/web-app</outputDirectory>
                <resources>
                    <resource>
                        <directory>web-app</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
前事休说 2024-12-05 04:06:16
  1. mvn -X 可能更具启发性

  2. 许多人会使用 maven-antrun-plugin 并在 ant 中编写脚本,以获得可移植的解决方案。

  1. mvn -X might be more revealing

  2. Many people would use the maven-antrun-plugin and script this in ant so as to get a portable solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文