2013-10-16 3 views
4

간단한 사용자 입력을 요구하고 플러그인의 실행을 중단할지 여부를 결정하고 싶은 Maven 플러그인을 작성하고 있습니다.Maven에서 사용자 입력을 요청하는 방법은 무엇입니까?

나는 같은 것을 할 싶습니다

$> mvn myplugin:run 

[MAVEN] would you like to continue? [default value: y] _ 

나는 설명 here로 받는다는-antrun-플러그인을 사용하여 시도했지만, 내 플러그인을 빌드 할 때이 경우 Maven은 사용자 입력을 가져옵니다. 대신, 내 플러그인을 선언 한 다른 응용 프로그램에서 내 플러그인을 실행할 때 입력을 검색하고 싶습니다. (혼란 스럽습니까?)

+0

매개 변수 그리고 당신은 TravisCI 같은 자동화 빌더를 해결 할 방법으로 다음 수집 된 값을 받는다는를 호출하는 쉘 스크립트를 사용할 수 있습니다 쓴 받는다는 방법을 아프게하지하기 플러그인을 사용해야합니까? – hexafraction

+0

나는 동일한 요구 사항을 가지고있다. Promotter를 모조에 넣으려고했지만 아직 기쁨이 없습니다 – DarVar

+0

사용자 입력을 포기했습니다. 대신, 이상한 일이 발생하면 사용자에게 알려주는 메시지를 인쇄합니다. – felipecao

답변

0

이렇게하지 마십시오. 데이터를 mojo에 제공해야하는 경우 구성을 통해 수행하십시오.

Maven 빌드의 동작은 POM과 Maven 명령 줄에 제공된 & 옵션에 따라 완전히 예측 가능해야합니다. 빌드하는 동안 사용자가 추가 정보를 입력하도록 허용하면 POM이 더 이상 프로젝트를 완전히 설명하지 않습니다.

또한 자동화 된 빌드 서버가 작업을 수행하지 못하게합니다.

+4

내가 개발중인이 플러그인은 실제로 자동화 된 도구로 실행되지 않아야합니다. 그 목적은 주어진 프로젝트에 대해 몇 가지 구성을 수행하는 것입니다. 내가하고 싶은 일은 사용자에게 이러한 수정이 일어날 것이라고 경고하고, 자바 스크립트 확인() 메시지 또는 그와 비슷한 내용의 확인을 요청하는 것입니다. 그러나 나는 당신의 요점을 얻은 것 같아요. 메이븐 플러그인은 메이븐 단계에 연결될 예정이므로, 프로젝트가 자동으로 빌드 될 때 항상 실행됩니다. 사용자가 명령 줄에서 호출하지만 빌드 도구를 통해 호출되지 않는 Grails 스크립트와는 다릅니다. – felipecao

2

Prompter 구성 요소를 사용하고 플러그인 주입이 (당신이 Maven plugin annotations를 사용하는 가정 equivalent javadoc tags를 사용하지 않은 경우) :

@Component 
private Prompter prompter; 

그리고 사용 :에

String name = prompter.prompt("Please enter your name"); 

풀을 플러그인의 POM에 대한 이러한 종속성은 다음과 같습니다.

<dependency> 
    <groupId>org.codehaus.plexus</groupId> 
    <artifactId>plexus-interactivity-api</artifactId> 
    <version>1.0-alpha-6</version> 
</dependency> 

prompter 구성 요소는 릴리스 플러그인에서 사용자에게 태그 및 버전 및 archetype 플러그인을 묻는 데 사용됩니다. 변종

+0

소스 코드 이동 : [Prompter] (https://github.com/sonatype/plexus-interactivity/blob/master/plexus-interactivity-api/src/main/java/org/codehaus/plexus/components/interactivity/Prompter .자바) –

0

, wool.in.silver, 당신은 값을하라는 메시지를 표시하고

관련 문제