코드 를 만 들 기 위해 maven plugin 을 어떻게 씁 니까?
일 을 잘 하려 면 반드시 그 그릇 을 먼저 이 롭 게 해 야 한다.
1.먼저 익숙 하지 않 은 파트너 는 홈 페이지 의 예 를 직접 볼 수 있 습 니 다.플러그 인 을 어떻게 실행 하고 copile 과 같은 수명 주기 에 연결 하 는 지 설명 합 니 다.https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
2.코드 정리
여기 서 먼저 새로운 프로젝트 에서 시도 하 는 것 이 좋 습 니 다.오래된 프로젝트 는 먼저 생 성 할 코드 를 스타일 을 통일 한 후에 하 는 것 이 좋 습 니 다.하 나 는 코드 에 익숙 한 것 이 고,다른 하 나 는 생 성 이 편리 한 코드 를 직접 덮어 쓰 는 것 입 니 다.
3.여러분 이 mapstruct 라 는 작은 도 구 를 사용 해 본 적 이 있 는 지 모 르 겠 습 니 다.주로 enity 와 dto 를 바 꾸 는 데 도움 을 주 는 것 입 니 다.비슷 한 프로젝트 가 많 을 것 입 니 다.그러면 우 리 는 그것 이 어떻게 하 는 지 궁금 할 것 이다.인 터 페 이 스 를 쓰 면 코드 를 만 들 수 있다.
https://github.com/mapstruct/mapstruct
우선 분석 해 보 겠 습 니 다.주로 두 단계 로 나 뉘 어 1.코드 생 성 2.maven 코드 를 컴 파일 하 게 합 니 다.
첫 번 째 생 성 코드 에 대해 서 는 mapstruct 가 어떤 흑 기술 로 이 루어 졌 는 지 연구 하지 않 을 것 입 니 다.관심 있 는 친구 들 은 볼 수 있 습 니 다.https://github.com/mapstruct/mapstruct/blob/master/parent/pom.xml그것 의 소스 코드 를 직접 연구 하거나.우리 의 실현 방식 은 간단 한 문자열+자바 io 입 니 다.너무 기본 적 이 라 고 생각 되면 모델 엔진+apache common-io 같은 도 구 를 사용 할 수 있 습 니 다.생 성 된 문자열 을 파일 에 출력 하 는 것 이 코드 를 만 드 는 것 입 니 다.
Maven 에서 생 성 된 코드 를 어떻게 컴 파일 하 는 지 에 중점 을 두 겠 습 니 다.
우선 당신 의 mojo 류 를 새로 만 듭 니 다.
@Mojo(name = "generate")
public class NbdGenerateMojo extends AbstractMojo {
public void execute() throws MojoExecutionException {}
}
그리고 코드 를 만 들 려 면 출력 경로 가 있어 야 합 니 다.
@Parameter(property = "javaOutput",
defaultValue = "${project.build.directory}/generated-sources")
private String javaOutput;
mapstruct 는 우리 target 디 렉 터 리 에 generated-sources 라 는 폴 더 가 있 습 니 다.
우 리 는 execute 방법 에 코드 를 만 드 는 코드 를 썼 고 generated-sources 디 렉 터 리 아래 에 출력 되 었 습 니 다.
그럼 문제 가 생 겼 습 니 다.왜 제 IDE 에 잘못 보고 되 어 종 류 를 찾 을 수 없 습 니까?
src 디 렉 터 리 에 직접 생 성 되면 뮤 직 비디오 인 스 톨 이 ok 이라는 것 을 알 게 될 것 입 니 다.generated-sources 는 할 줄 모른다.
generated-sources 를 copile 의 source root 에 포함 시 키 지 않 았 기 때 문 입 니 다.이것 은 아이디어 에서 어떤 폴 더 를 오른쪽 클릭 해서 Sources Root 로 설정 하 는 것 과 같다.
@Parameter(property = "project", required = true, readonly = true)
private MavenProject project;
// execute
project.addCompileSourceRoot(javaOutput);
이제 당신 의 플러그 인 을 프로젝트 에 도입 할 수 있 습 니 다.
com.xxx
xxx-maven-plugin
0.0.1
process
generate-sources
generate
맞 아,이렇게 간단 해.코드 생 성 플러그 인 이 완성 됐어.
그리고 플러그 인의 주석 에 익숙 하지 않 으 면 이것 을 보 세 요.
https://maven.apache.org/developers/mojo-api-specification.html
${procject.build.directory}이러한 내 장 된 속성 에 익숙 하지 않 습 니 다.이것 만 보 세 요.
https://github.com/cko/predefined_maven_properties/blob/master/README.md
또한,생 성 된 코드 가 다른 module 에서 포장 되 어 있 는 것 이 아니 라 하나의 항목 에 있 을 때,이 plugin 이 생 성 된 코드 를 classes 에 컴 파일 해 야 합 니 다.그렇지 않 으 면 서비스 가 일어나 지 않 습 니 다.한 마디 로 소스 디 렉 터 리 가 얼마나 되 는 지 알 수 있 습 니 다.
org.codehaus.mojo
build-helper-maven-plugin
3.0.0
generate-sources
add-source
target/generated-sources/com/demo
다음 부 터 는 하지 말고 좋아요 모음 집 을 누 르 고 일어나 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.