39

最近作成した質問のバージョンが少し異なります。Netbeans 7.3の下にMavenプロジェクトがありますが、ビルド オプションを構成するためのファイルはありませんが、他のライブラリをインポートするために使用する があります。これで、 Netbeans 7.3のプロジェクト フォルダーにテキスト ファイル (たとえば)が保存されました。build.xmlpom.xmltextfile.txt

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

コンパイルすると、 jarファイルが置かれるtargetフォルダーが得られます。

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

Maven プロジェクトをコンパイルするときに、ファイル textfile.txt がターゲット フォルダーの下にコピーされるようにするにはどうすればよいですか?

4

4 に答える 4

51

最初の方法は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>
于 2013-05-04T14:48:50.767 に答える