2010-04-29 5 views
9

Maven 문서 Introduction to the Build Lifecycle에는 현재 시간을 출력하는 목표 인 display:time이 설명되어 있습니다. 플러그인은 다음과 같습니다Maven에서 목표의 이름을 바꾸는 방법은 무엇입니까?

... 
<plugin> 
    <groupId>com.mycompany.example</groupId> 
    <artifactId>maven-touch-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
    <execution> 
     <phase>process-test-resources</phase> 
     <goals> 
     <goal>timestamp</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
... 

나는 몇 가지 질문이 플러그인과 관련이 있습니다

  1. 가 어떻게에 목표의 이름을 변경할 수 있습니다, foo:bar 예를? (displaytime도 XML 조각의 어느 부분에도 나타나지 않는 이유는 무엇입니까? 조각을보고 어떤 목표가 정의되는지 어떻게 알 수 있습니까?)
  2. 이 목표를 수동으로 어떻게 실행할 수 있습니까? 비슷한 구조의 경우 mvn display:time의 동등 물이 작동하는 경우도 있지만이 방법은 일관되게 작동하지 않습니다.
  3. 이 목표가 존재하는지 어떻게 알 수 있습니까? (가능한 목표를 나열하십시오 : this question은 이것이 불가능 함을 나타냅니다.)

답변

11

어떻게, foo:bar 예를 들어,에 목표의 이름을 변경할 수 있습니까? (왜 displaytime도 당신이 그것을 정의하는 것을 목표 조각,보고에서 알 수있는 방법?를 XML 조각 어디에서나 나타 납니까?)

foo:bar에, foo는 "플러그인의 목표는, 정확하게는 접두어 "이고 bar은"목표 "입니다.그리고 나중에 명명 규칙 (또는 configured 수 있습니다)에서 파생되는 동안 전자는 BarMojo, 플러그 인 논리를 구현하는 클래스의 주석에서 비롯됩니다. 이런 식으로 뭔가 :

/** 
* Do the wonderful bar. 
* @goal bar 
* @requiresProject false 
*/ 
public class BarMojo extends AbstractMojo 
{ 
    ... 
} 

목표를 변경하면 플러그인의 모조의 주석을 수정하고 다시 작성해야합니다.

링크 된 문서의 경우 목표 timetimestamp 목표를 process-test-resources 단계로 바인딩하는 XML 단편간에 분명히 불일치가 있습니다. 이것은 오타가되어야합니다.

수동으로 어떻게이 목표를 실행할 수 있습니까? (유사한 구조, MVN 디스플레이에 해당하는 경우 :. 시간이 가끔 작동하지만,이 지속적으로 작동하지 않습니다)

이처럼 호출 할 수

mvn com.mycompany.example:maven-touch-plugin:1.0:timestamp 

이 명령을 짧게 만들 수 당신의 settings.xmlPlugin Groups-com.mycompany.example를 추가하여 (org.apache.maven.pluginsorg.codehaus.mojo 경우 기본적으로 선언 당신은 그 플러그인에 대해 어떻게 작동하는지 궁금)

<settings> 
    ... 
    <pluginGroups> 
    <pluginGroup>com.mycompany.example</pluginGroup> 
    </pluginGroups> 
</settings> 
내가 말했듯이, 접두사는 configured 될 수 있으며, 규칙에 따라

mvn touch:timestamp 

권장 되나 : 플러그인 이름이 ${prefix}-maven-plugin 또는 maven-${prefix}-plugin 패턴을 일치하기 때문에

그런 다음, 당신은 실행할 수 있습니다.

이 목표가 존재하는지 어떻게 알 수 있습니까?

플러그인 소스 (플러그인 소스에서 파생 됨) 또는 플러그인 소스를 확인하십시오.


또한 메이븐 책의 한 페이지의 맨 아래에 오타가 있다는 것을

1 참고. 맞춤 접두어로 플러그인을 실행하는 방법은 mvn blah:echo이어야합니다 (MVNREF-145 참조).

0

처음으로. 목표의 이름은 플러그인에 의해 정의됩니다 (플러그인에 대한 주석이 있습니다). 소스 코드가 있다면 그것을 바꿉니다. XML을 살펴보면 플러그인이 XML에 주어진 것만을 정의하는 목표의 종류를 알 수 없습니다. 가장 좋은 위치는 플러그인의 문서를 보는 것입니다. 두 번째 : 문서를 확인해야합니다. 보통 pluginname : goal ... 플러그인 (groupId)의 전체 경로를 지정해야 할 수도 있습니다. 세 번째로 : 보통 도움말 플러그인을 사용할 수 있어야합니다. docs을 살펴보십시오.

2

문서에 오타가있을 가능성이 있다고 생각합니다. 플러그인 목표는 plugin-name:goal-name으로 지정됩니다. 이 XML은 목표 touch:timestampprocess-test-resources 단계에 바인딩합니다. 이 부분은 display:time과 아무 관련이 없습니다.

  1. 내가 아는 한, 메이븐 목표의 이름을 바꾸는 것은 불가능합니다. (일을 좀 더 혼란스럽게 만드는 것처럼 보입니다.) 플러그인 소스 코드는 pom이 아니라 목표를 정의합니다. < 실행 > 태그가 pom에있는 경우에만 플러그인 목표를 단계에 바인딩하거나 이미 기본 단계가있는 경우 목표를 리 바인드 할 수 있습니다.

  2. prefix:goalName으로 목표를 실행할 수 있어야합니다. 가장 자주 접두사는 artifactId에서 "maven-"과 "-plugin"사이에있는 모든 것입니다. 예 : touch:timestamp. 이것은 플러그인 작성자가 플러그인 이름과는 다른 "goalPrefix"를 지정할 수 있기 때문에 약간의 상황에서는 복잡하지만이 문제에 대해서는 전혀 실행하지 않았습니다.

  3. 플러그인이 정의하는 목표와 플러그인이 기본적으로 바인딩되는 단계를 확인하는 가장 좋은 방법은 플러그인 설명서를 읽는 것입니다.

0

예를 들어 목표 이름을 foo : bar로 변경할 수 있습니까? (왜 XML 조각의 어느 부분에도 표시하거나 표시하지 않는 이유는 무엇인지, 조각에서 보았을 때 어떤 목표가 정의되어 있는지 어떻게 알 수 있습니까?)

접두사의 이름을 "foo"로 변경하려면 다음을 수행해야합니다. Maven Plugin "Plugin"을 설정한다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-plugin-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
     <goalPrefix>foo</goalPrefix> 
    </configuration> 
    </plugin> 

가 목표의 이름을 변경하려면, 당신은 당신의 설정에 플러그인 접두사를 추가 플러그인 자바 소스

/** 
* Prints a timestamp to console 
* 
* @goal bar 
*/ 
public class TimestampMojo extends AbstractMojo { 
    // ... 
} 

내에서의 javadoc을 편집해야합니다.xml 파일

<pluginGroups> 
    <pluginGroup>com.mycompany.example</pluginGroup> 
</pluginGroups> 

이 목표를 수동으로 어떻게 실행할 수 있습니까?

mvn com.mycompany.example:foo:bar 

또는 (위) 플러그인 접두사 설정으로

mvn foo:bar 

이 목표가있는 경우는 어떻게 볼 수 있습니까? (즉, 사용 가능한 목표를 나열하십시오)

다음을 maven plugin plugin 요소에 추가하면 foo : help를 사용하여 목표 목록을 인쇄 할 수 있습니다.

<plugin> 
... 
<executions> 
<execution> 
<id>generated-helpmojo</id> 
<goals> 
<goal>helpmojo</goal> 
</goals> 
</execution> 
</executions> 
</plugin>