编译Maven项目时如何将文本文件移动到目标文件夹?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我在Netbeans 7.3下有一个Maven项目,它没有任何文件来配置构建选项,而我用它来导入其他库。现在,我有一个文本文件(比方说)存储在Netbeans 7.3的项目文件夹中,例如build.xmlpom.xmltextfile.txt

project folder
  textfile.txt
  src
    package
    package.subpackage
      MyClass.java

当我编译时,我得到一个target文件夹放入jar文件,例如

project folder
  textfile.txt
  target
    classes
    generated-sources
    ....etc
    test-classes
    MyProject.jar
  src
    package
    package.subpackage
      MyClass.java

如何在编译Maven项目时将文件textfile.txt复制到目标文件夹下?

提问于
用户回答回答于

第一种方法是将文件放入src/main/resources该文件夹中,该文件夹专用于存储编译资源,即包含在jar文件中的资源(例如图标的图像)。

如果你需要使配置文件与jar分发,但由它分隔,则必须编辑该pom.xml文件。一个可能的答案是在<plugins></plugins>标签之间添加以下插件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Using env.test.properties</echo>
                    <copy file="textfile.txt" tofile="${basedir}/target/textfile.txt"/>
                    </tasks>
                </configuration>
            </execution>
        </executions>
    </plugin>

此外,可以在这里阅读也可以使用专用插件将所有资源从“输入”目录导入目标中的“输出”目录,例如:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.1</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/output</outputDirectory>
               <resources>          
                    <resource>
                        <directory>input</directory>
                        <filtering>true</filtering>
                    </resource>
               </resources>              
            </configuration>            
        </execution>
     </executions>
</plugin>
用户回答回答于

最简单的方法是使用我所知道的一些资源

<build>
  <plugins>
    <!-- your plugins, including or not maven-resource-plugin -->
  </plugins>
  <resources>
    <resource>
      <filtering>true</filtering><!-- if it is neccessary -->
      <directory>${project.basedir}</directory><!-- from -->
      <targetPath>${project.build.directory}</targetPath><!-- to -->
      <includes><!-- what -->
        <include>textfile.txt</include>
      </includes>
    </resource>
  </resources>
</build>

扫码关注云+社区