繁体   English   中英

Maven将两个单独的目录及其文件复制到不同的位置

[英]Maven copy two separate directories and their files in separate locations

我正在尝试使用maven将两个单独的目录及其文件复制到不同位置的目录中,但无法实现这一点,请问有任何机构对此有所帮助吗?

** src / com / smepath ----> buildDirectory / install / ****

** src / com / someotherpath -----> buildDirectory / xsd / ****

尽管这里有一个相关的问题( 使用Maven复制文件的最佳做法 ),但不能解决我的问题。

我正在尝试更改以下解决方案,即。

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/install</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources/common/install</directory>
                                <filtering>true</filtering>
                            </resource>
                            <resource>
                                <directory>src/main/resources/${env}/install</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

就像如果我为我的第二个目录位置xsd再输入一个类似的条目,然后第二个目录位置优先。

同样在<executions>使用额外的<excution>或额外的<configuration>也不起作用。

将第二个<execution>添加到pom应该可以。
我的猜测是您没有为每个阶段指定唯一的<id>

我的项目布局如下:

src/main/resources/foo
                    |_a.txt
                    |_b.txt
src/main/resources/bar
                    |_c.txt
src/main/resources/baz
                    |_d.txt
src/main/resources/fum
                    |_e.txt
                    |_f.txt

经过clean validate我最终将文件复制如下:

target/location-1
               |_a.txt
               |_b.txt
               |_c.txt
target/location-2
               |_d.txt
               |_e.txt
               |_f.txt

在我的pom.xml中使用以下插件定义

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources-1</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
          <configuration>
            <outputDirectory>${project.build.directory}/location-1</outputDirectory>
            <resources>
              <resource>
                <directory>src/main/resources/foo</directory>
                <filtering>true</filtering>
              </resource>
              <resource>
                <directory>src/main/resources/bar</directory>
                <filtering>true</filtering>
              </resource>
            </resources>
          </configuration>
      </execution>
      <execution>
        <id>copy-resources-2</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
          <configuration>
            <outputDirectory>${project.build.directory}/location-2</outputDirectory>
            <resources>
              <resource>
                <directory>src/main/resources/baz</directory>
                <filtering>true</filtering>
              </resource>
              <resource>
                <directory>src/main/resources/fum</directory>
                <filtering>true</filtering>
              </resource>
            </resources>
          </configuration>
      </execution>
    </executions>
  </plugin>

您应该能够以上面的示例为例来复制安装文件和xsd文件。

虽然我按照@azurefrog的建议使用了额外的<execution>解决方案,但是我也可以使用以下解决方案来实现这一点。

在这里,我将我的两个目录installxsd放在一个resources目录中,并进一步使用这些东西。

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/resources</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources/common</directory>
                                <includes>
                                    <include>install*/**</include>
                                </includes>
                                <filtering>true</filtering>
                            </resource>
                            <resource>
                                <directory>src/main/resources/${env}</directory>
                                <includes>
                                    <include>install*/**</include>
                                </includes>
                                <filtering>true</filtering>
                            </resource>
                            <resource>
                                <directory>src/main/resources/common</directory>
                                <includes>
                                    <include>xsd*/**</include>
                                </includes>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM