web-dev-qa-db-ja.com

pomファイルを使用してターゲットディレクトリからリソースファイルを削除または削除します

Pom.xmlに2つのプロファイルがあり、ターゲットリソースディレクトリに追加したいくつかのリソースファイルがあります:${project.build.outputDirectory}/resources最初のプロファイルの実行中。 2番目のプロファイルの実行中にこれらのリソースファイルを削除する必要があります。ターゲットディレクトリから既存のファイルを削除または削除する方法はありますか?

31
Kaustubh Najan

私は解決策を得た.. !!

<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
    <execution>
        <phase>test</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <tasks>
                <delete>
                    <fileset dir="${project.build.outputDirectory}/resources" includes="*.xml" />
                </delete>
            </tasks>
        </configuration>
    </execution>
</executions>
</plugin>

参照用- http://maven.Apache.org/guides/mini/guide-building-for-different-environments.html

32
Kaustubh Najan

私はマシューの観察に同意しますが、元のポスターがプロファイルの(通常の)「実行」中にcleanの実行を自動化する方法を尋ねているという印象を受けました。

Maven Clean Pluginに プラグインの実行 を定義できます。通常はcleanにのみバインドされますが、プラグインの実行を定義することにより、clean:clean(それはcleanプラグインのclean目標です) ライフサイクルフェーズ どちらでもかまいません。 Maven Clean Pluginのドキュメントには、これを行う方法の があります。ドキュメントには、追加ファイルを削除する もあります。この2つをマージすると次のようになります。

  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>initialize</phase>
        <goals>
          <goal>clean</goal>
        </goals>
        <configuration>
         <filesets>
            <fileset>
              <directory>some/relative/path</directory>
            </fileset>
          </filesets>
        </configuration>
      </execution>
    </executions>
  </plugin>
30
Sander Verhagen

mvn cleantargetディレクトリ(およびその中のすべてのファイル)を削除します。 targetディレクトリから特定のファイルのみを削除する場合は、次の組み合わせ:

  • excludeDefaultDirectoriesは、ディレクトリ全体の削除を停止します。

  • filesetsは削除するものを指示します

参照: http://maven.Apache.org/plugins/maven-clean-plugin/clean-mojo.html

16

Apache Maven AntRun Plugin 1.8 を使用したソリューション:

<plugin>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <delete 
            dir="${project.build.outputDirectory}/resources"
            includeemptydirs="true"/>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>
7

上記の回答に感謝します。最終的に私は次のようなものに来ました:

j st deletesomeターゲットフォルダ内のディレクトリにしたい場合は、いくつかを作成する必要がありますこのように構築します。
これは、たとえばフォルダーのすべてのコンテンツのみを削除します。

  • ターゲット/アンパック
  • gen-external-apklibs

excludeDefaultDirectories n otが完全なターゲットフォルダーを削除を許可します。
iを使用して、リント分析の前にターゲットフォルダをクリーンアップしました。

       <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>Deleting all unnecessary files before lint analysis</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                <filesets>
                    <fileset>
                        <directory>target/unpack</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                    <fileset>
                        <directory>gen-external-apklibs</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                </filesets>
                <verbose>true</verbose>
            </configuration>
        </plugin>
3
cV2

出力ディレクトリからファイルをいくつか削除するだけで、次のことがうまくいきました。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <delete file="${project.build.outputDirectory}/appContextLocal.xml" />
                    <delete
                        file="${project.build.outputDirectory}/appContextServer.xml" />
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

また、<tasks> .... </tasks>の間に必要なタスクを置き換える場合、ここで任意のantコマンドを実行できると考えられ、それが機能します。

実行できるantタスクのリストは here です

参照: http://maven.Apache.org/plugins/maven-antrun-plugin/usage.html

3
Zeus