【问题标题】:How can I copy an entire directory into another directory using Maven?如何使用 Maven 将整个目录复制到另一个目录?
【发布时间】:2013-07-25 07:41:07
【问题描述】:

我想知道如何在不使用 Mmaven antrun 插件的情况下使用 Maven 将整个目录复制到另一个目录。

【问题讨论】:

    标签: maven


    【解决方案1】:

    您可以使用Maven resources plugin

    以他们的文档为例:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
              <execution>
                <id>copy-resources</id>
                <!-- here the phase you need -->
                <phase>validate</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
                  <resources>          
                    <resource>
                      <directory>src/non-packaged-resources</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>              
                </configuration>            
              </execution>
            </executions>
          </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>
    

    如果我没记错的话,这会将directory 的内容复制到outputDirectory 中。

    【讨论】:

    • &lt;phase&gt;validate&lt;/phase&gt; 为我做了,谢谢!现在,每当我在项目中保存任何文件时,Maven 都会运行复制资源 :)
    • 是的,但是您基本上是将输入目录重新创建为输出目录,而不是“将整个目录复制到另一个目录”。如果我想包含另一个资源,则需要使用自己的 outputDirectory 进行完全其他的执行
    【解决方案2】:

    您可以使用https://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html

    <?xml version="1.0" encoding="UTF-8"?>
    <build>
       <plugins>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-dependency-plugin</artifactId>
             <version>3.1.2</version>
             <executions>
                <execution>
                   <id>copy</id>
                   <phase>package</phase>
                   <goals>
                      <goal>copy</goal>
                   </goals>
                </execution>
             </executions>
             <configuration>
                <artifactItems>
                   <artifactItem>
                      <groupId>junit</groupId>
                      <artifactId>junit</artifactId>
                      <version>3.8.1</version>
                      <type>jar</type>
                      <overWrite>false</overWrite>
               <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                      <destFileName>optional-new-name.jar</destFileName>
                   </artifactItem>
                </artifactItems>
                <outputDirectory>${project.build.directory}/wars</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
             </configuration>
          </plugin>
       </plugins>
    </build>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2011-08-11
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多