は、おそらく神経叢DIコンテナの設定によって、私の目標を達成するための方法は、おそらく神経叢コンポーネント記述子の手段
によってはい、方法がある、があります。 DefaultMavenResourcesFiltering
で使用されている"default"
MavenFileFilter
コンポーネントを無効にして、独自のものを提供する必要があります。これは簡単に実行できます。MavenFileFilter
ロール用の独自のPlexusコンポーネントを作成し、"default"
ヒントを上書きしてリソースプラグインの依存関係として追加します。プラグインの依存関係の下に直接存在するクラスはare loaded firstなので、それらはデフォルトのものよりも優先されます。
セットアップは次のとおりです。以下のPOMを有する新たなMavenプロジェクトを作成します。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-file-filter</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
これはMaven Filtering共有コンポーネントに依存している、と私たちのクラスが正しく叢として登録されているように(自動的に神経叢component.xml
を生成するために、plexus-component-metadata
プラグインを宣言するコンポーネント)。
その後、カスタムファイルフィルタは単純です:DefaultMavenFileFilter
あるデフォルト1、継承することが可能である:
@Component(role = MavenFileFilter.class, hint = "default")
public class MyMavenFileFilter extends DefaultMavenFileFilter {
public void copyFile(File from, File to, boolean filtering, List<FileUtils.FilterWrapper> filterWrappers, String encoding, boolean overwrite) throws MavenFilteringException {
super.copyFile(from, to, filtering, filterWrappers, encoding, overwrite);
// your logic of modifying the "to" file here
}
}
これは単に他のすべてのメソッドがコールし終わるcopyFile
メソッドをオーバーライドし、作りますsuperメソッドを呼び出してカスタムコードを実行することで、デフォルトの動作がまだ起きていることを確認してください。この部分では、to
ファイルを処理し、それに必要な行をプリペアすることができます。このMavenプロジェクトがmvn clean install
と一緒にインストールされると
、あなたがリソースプラグインにdepenndecyとして追加することができます
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<dependencies>
<dependency>
<groupId>my.groupId</groupId>
<artifactId>my-file-filter</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</plugin>
、それはDefaultMavenResourcesFiltering
内部に注入されるカスタムファイルフィルタです。
Thx、参考までにhttps://github.com/aperto/sourceurl-resourcefilterを参照してください。私はあなたのソリューションを見た前に終了していたので、 'DefaultMavenFileFilter'のコードをコピー&ペーストするのではなく、ターゲットファイルに2回書くだけで、もっと単純化できます。' mavenFilteringHint'を使わずに提案する。 – jfrantzius