는 아마 아마 신경총 구성 요소 설명자
의 수단 예, 방법이에 의해 신경총 DI 컨테이너의 구성에 따라 내 목표를 달성 할 수있는 방법이 있습니다. DefaultMavenResourcesFiltering
에 사용되는 "default"
MavenFileFilter
구성 요소를 무시하고 직접 제공해야합니다. 쉽게 수행 할 수 있습니다. MavenFileFilter
역할을 위해 자신의 Plexus 구성 요소를 만들고 "default"
힌트를 덮어 쓰고 Resources Plugin의 종속성으로 추가하기 만하면됩니다. 클래스가 직접적으로 플러그인 종속물 are loaded first 아래에 있기 때문에 기본 클래스보다 우선 적용됩니다.
설정은 다음과 같습니다. 다음 POM 갖는 새로운 Maven 프로젝트를 만듭니다 있도록 이것은 Maven Filtering 공유 구성 요소에 종속
<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>
을 자동으로 신경총 component.xml
을 생성하기 위해 plexus-component-metadata
플러그인을 선언 (우리의 수업은 제대로 신경총로 등록 구성 요소).
그런 다음, 사용자 정의 파일 필터는 간단하다 : DefaultMavenFileFilter
인 디폴트 하나에서 상속 할 수 있습니다 :
@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
메소드를 오버라이드 (override), 차종 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를 참조하십시오. 나는 당신의 솔루션을보기 전에 끝냈습니다. 그래서'mavenFilteringHint'를 사용하지 않고'DefaultMavenFileFilter'의 코드 복사 및 붙여 넣기를 오버라이드하는 대신에 타겟 파일에 두 번 쓰면 라인을 따라 더 단순화 될 수 있습니다. 제안했다. – jfrantzius