maven-compiler-plugin 용 새 컴파일러를 만들었습니다. 이 컴파일러는 src/main/groovy와 src/main/java에서 컴파일 소스를 찾는 것을 좋아합니다. 비슷하게, 테스트 소스는 src/test/groovy와 src/test/java에 있습니다.빌드에 새 소스 폴더를 자동으로 추가하는 Maven 모조 만들기
build-helper-maven-plugin
사용자가 빌드를 위해 새 원본 폴더를 지정하도록 POM을 늘릴 수 있지만이 플러그인을 사용하면 20 lines of extra configuration in the pom 이상이 필요하므로 이상적이지 않습니다.
추가 소스 폴더를 자동으로 구성하는 모조를 만들고 싶습니다.
여기 내가 만든 모조가 있지만, 모조가 적절한시기에 실행되도록하는 방법을 모르겠습니다.
/**
* @goal add-groovy-source
* @phase generate-sources
* @requiresDependencyResolution compile
* @execute phase="compile"
*/
public class AddGroovySourceFolders extends AbstractMojo {
/**
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Adding /src/main/groovy to the list of source folders");
this.project.addCompileSourceRoot(project.getBasedir() + "/src/main/groovy");
}
}
다시 말하지만, 내 목표는 사용자의 치어의 구성의 최소한의 금액을 보장하는 것입니다. 이 말은이 모조와 더 이상 구성이없는 플러그인에 대한 종속성 선언 만 있어야한다는 뜻입니다.
감사합니다. 나는 이것을 시험해 볼 것이다. –
우수. 나는 일을 시작하고있다. 그래도 몇 가지 질문이 있습니다. 나는 각 단계의 목표 버전이 명백하다는 것에 만족하지 않는다. 내 component.xml에서 그들을 제거하고 일들이 작동하는 것 같습니다. 그걸로 어떤 문제가 보이십니까? 또한 이러한 구성 요소는 jar 라이프 사이클과 관련이 있습니다. 필자는 다른 재미있는 라이프 사이클 (예 : ear, war, maven-plugin 등)을 위해 일을 복사해야한다고 생각합니다. 주위에 어떤 방법이 보이니? –
@AndrewEisenberg에서 버전을 제거한다는 것은 플러그인의 최신 버전이 선택 될 것임을 의미합니다. 이는 원하는 것 일 수도 있고 아닐 수도 있습니다. 긍정적 인 점은 사용되는 Maven의 버전이 무엇이든간에 합리적으로 적절한 플러그인 버전을 사용하고 작동한다는 것입니다. 네거티브는 사용자가 컴파일러 플러그인의 최신 버전을 가지고 있다면 플러그인이 메이븐의 기본 플러그인 대신 활성화되었을 때 사용됩니다. 더 많은 패키징 유형 (war, ejb 등)을 지원해야하는 경우 각 유형의 수명주기 구성을 무시해야합니다. – prunge