공통 부모 프로젝트의 하위 프로젝트가 두 개 있습니다. 또한 생성기 프로젝트와 해당 생성기 용 Maven 플러그인 프로젝트가 있습니다. 또한, 두 자식 프로젝트 코드 생성에 사용되는 것과 동일한 입력 파일을 사용 :Maven : 프로젝트 간 소스 공유
발전기 플러그인 사내 만든 메이븐 플러그인parent: pom
child1: jar
src/main/generator/input.gen
child2: jar
src/main/generator/input.gen
generator: jar
generator-plugin: maven-plugin
:
@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
public class GeneratorPlugin extends AbstractMojo {
@Parameter(required = true, readonly = true, defaultValue = "${project}")
private MavenProject project;
@Parameter(required = true, defaultValue = "${project.basedir}/src/main/generator/input.gen")
private File input;
...
}
Currenlty, 은 src/main/generator/input.gen
, child1
및 child2
에 중복됩니다. 이것은 문제입니다. input.gen
의 버전을 하나만 갖고 싶습니다.
프로젝트를 어떻게 구성해야합니까? 두 자식 프로젝트의 poom에있는 generator-plugin
플러그인의 <configuration><input>...</input></configuration>
에서이 공유 사본을 어떻게 참조해야합니까?
먼저 소스 코드가 변경 될 때마다 플러그인을 실행하는 것을 의미하는 버전 제어에 체크인되기 때문에 'src'에 리소스 등을 생성하지 않습니다. 가장 좋은 위치는'target' 디렉토리에 물건을 생성하는 것입니다. 이것은 기본적으로 버전 관리에 의해 무시됩니다. 또한 생성 된 자원은 결과 jar 파일로 패키지화되며, 여기에서 다른 모듈이 클래스 경로에 의해 자원에 액세스 할 수 있습니다. – khmarbaise
@khmarbaise 오해 또는 혼란이 있다고 생각합니다. 'input.gen'은 입력 자원이고, 생성자에 의해 클래스가 생성되어야하는 스키마, 모델 등의 정의를 포함합니다. 즉, 자원을 생성하지 않습니다. –
아, 이제 알겠습니다. 내 사이트에서 미안합니다. 그러나 이것은'input.gen'을 포함하는 모듈 하나와이 파일에서 클래스를 생성하는 적절한 플러그인을 가져야 함을 의미합니다. 결과적으로 다른 모듈에서 재사용 할 수있는 jar 파일을 얻을 수 있습니다. 아무 것도 복사하지 않고 ... – khmarbaise