1

我正在使用 Maven 3.0.3。我在使用 Maven exec 插件将一个目录的内容复制到另一个目录时遇到问题。可悲的是,当我在我的 pom.xml 中包含这个插件时……</p>

<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>

它不工作。我收到以下错误...</p>

[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]

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

4

3 回答 3

2

如果您使用的是 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它们会自动插入它们,因此它们不包含在<argument>-tag 中。

于 2018-04-03T18:23:39.370 回答
1

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

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

特别注意'web-app/*'它试图复制的文件。因为它引用了这个参数,所以该命令在 web-app 目录中cp查找具有该名称的特定文件。*因为您没有具有此名称的文件,所以它以错误代码退出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>
于 2011-11-19T00:01:48.680 回答
0
  1. mvn -X 可能更具启发性

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

于 2011-08-05T17:51:50.150 回答