2011-04-05 3 views
2

나는 방대한 양의 인수를 취하여 우수한 args4j을 사용하여 구문 분석하는 기존 Java 명령 행 프로그램을 사용하고 있습니다.maven mojo에 기존 Java 실행 파일을 번들로 묶는 방법

이제이 애플리케이션에 포함 된 Java 코드를 실행하는 maven 플러그인 mojo를 만들고 싶습니다.

지금까지 기본 방법을 시도했습니다. 각 명령 줄 인수를 모조 매개 변수로 복제했습니다. 부 Maven mojo javadoc 어노테이션은 args4j 어노테이션보다 훨씬 덜 완전하고 통합되어 있기 때문에 예외적이고 지루하고 오류가 발생하기 쉽다.

그래서 maven 3을 사용하면 내 실행 파일을 maven mojo로 실행하는 더 좋은 방법이 있습니까? 오, 제발 내 말을하지 마십시오 exec-maven-plugin, 너무 멀리 그 사건 (내 실행 파일의 조합을 사용하여 프로젝트 설정 및 사용자 프로필 것들을 사용하여 실행해야합니다, 그리고 난 그냥 maven - exec - 플러그인은 트릭을하지 않을 것입니다.)

+0

몇 개의 논쟁에 대해 이야기하고 있습니까? – khmarbaise

+0

@ khmarbaise 10에서 20 사이 – Riduidel

+0

나는 많은 매개 변수에 기본값이 있다고 생각합니까? 더 많은 매개 변수를 가진 많은 플러그인을 알고 있습니다. – khmarbaise

답변

1

비록 일반적인 관점에서 @khmarbaise's answer은 완벽하게 사실이지만, 조금 연장하고 싶습니다.

내 독립 실행 형 명령 줄 응용 프로그램은 args4j를 사용하지만이 프로세스는 기본 빈의 동일한 명령 줄 주석에 의존하는 Commons CLI 또는 (더 많은) JCommander을 사용하여 상당히 잘 복사 할 수 있다고 생각합니다.

그래서, 내가 한 것은, 인트로 스펙 션을 사용하여 기본 빈 명령 행 인수 목록을 가져 오는 maven mojo입니다. 각 인수에 대해 프로젝트/설정 정보에 속성이 있어야합니다. 이 속성이 있으면 옵션과 연결된 finally를 사용하여 가짜 명령 줄을 작성합니다.

모든 옵션 (maven 속성으로 저장 됨)을 찾았 으면 args4j를 사용하여 내 bean을 채운 다음 main 명령을 사용하여이 bean을 실행할 수 있습니다.

당신의 어플리케이션이 플래그와 no-args run() 메소드를 가지고 있다면,이 접근법이 꽤 잘 일반화 될 수 있다고 생각합니다.

2

유일한 방법은 Maven 플러그인을위한 Maven 방법 인 mojo 매개 변수를 통한 것입니다.

mojo 매개 변수 대신 구성을 포함하는 속성 파일을 정의하지 못한 이유는 무엇입니까? 하지만 메이븐 플러그인 (Maven Plugins)은 모조 파라미터 (Mojo Parameters)를 사용하는 것이 가장 좋습니다.

+0

답변을 수락하지 못해 죄송합니다. 그러나 더 나은 해결책을 찾았으며 이후 답변에서 설명 드리겠습니다. 제 행동을 용서해주십시오. – Riduidel

관련 문제