2010-08-16 2 views
62

Maven에서 리눅스 쉘 명령어를 실행하고 싶습니다. 여기에 내가 뭘하려 :Maven의 pom.xml에서 쉘 명령어를 실행하고 싶습니다.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>hostname</executable> 
    </configuration> 
</plugin> 
+0

질문을 정리하고 질문에서 pom.xml을 포맷하십시오. 읽을 수 없습니다. – zengr

+9

나는 무례하다는 것을 의미하지는 않지만 질문을하는 법을 배워야 할 필요가 있으며, 우리는 심령 적이 아닙니다. 뭐 했어? 너는 무엇을 얻었 느냐? 예상되는 결과는 무엇입니까? –

답변

109

여기 나를 위해 일해 내용은 다음과 같습니다

<plugin> 
    <artifactId>exec-maven-plugin</artifactId> 
    <groupId>org.codehaus.mojo</groupId> 
    <executions> 
    <execution><!-- Run our version calculation script --> 
     <id>Version Calculation</id> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
     <configuration> 
     <executable>${basedir}/scripts/calculate-version.sh</executable> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

+6

''은''다음에 있어야하고 거기에 위치하지 않아야하므로 플러그인 1.5.0 버전에서는 작동하지 않는다고 덧붙이고 싶습니다. 이 간단한 구문상의 실수를 찾기 위해 꽤 오랜 시간이 걸렸습니다. Maven의 오류 출력은별로 도움이되지 않습니다. – joergl

+1

배포 단계 후 스크립트를 실행하려면 어떤 단계 또는 목표를 제공해야합니까 ?? – Lucy

+0

Windows에서 작동합니까? –

29

여기서 문제는 내가 예상 무엇인지 모르겠입니다. 현재 설정하고, 명령 행에 플러그인을 호출은 작동합니다 :

 
$ mvn exec:exec 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3491937 
[INFO] task-segment: [exec:exec] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [exec:exec {execution: default-cli}] 
[INFO] laptop 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
... 

글로벌 configuration를 사용하는 경우, hostname 명령이 실행됩니다 (laptop 내 호스트 이름입니다). 즉, 플러그인이 예상대로 작동합니다. 당신이 원하는 경우

이제 플러그인 빌드의 일환으로 을 실행 얻을, 당신은 바인드 특정 단계의 목표에 있습니다. 예를 들어, compile에 바인딩하기 : 다음

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
     <execution> 
     <id>some-execution</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>exec</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <executable>hostname</executable> 
    </configuration> 
    </plugin> 

를 실행 한 다음, 당신은 execution 내부 configuration을 지정할 수 있습니다

 
$ mvn compile 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3491937 
[INFO] task-segment: [compile] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory /home/pascal/Projects/Q3491937/src/main/resources 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [exec:exec {execution: some-execution}] 
[INFO] laptop 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
... 

참고.

+0

[오류] BUILD ERROR [정보] -------------------- -------------------------------------------------- [0] '간부 인 - 받는다는 - 플러그인'플러그인에 대한 정의 내부에는 다음과 같은 지정 : - [INFO] 하나 이상의 필수 플러그인 매개 변수는 '간부 간부'실종/무효 <구성> . .. VALUE(210) 명령 줄에서 - 또는 , 지정 '-Dexec.executable = VALUE' 을 지금이 오류가 발생합니다. – NareshKumar

+2

@ gnash-85 : 아직도 당신이하는 일에 대해 전혀 몰라요.정확한 스 니펫 **을 사용했는데 위와 같이 문제가 없습니다. 질문을 업데이트하여 maven을 호출하는 방법 (그리고 무언가를 변경 한 경우 현재 구성이 무엇인지)을 보여주십시오. –

+0

동일한 코드를 하위 모듈에 넣었습니다. 그리고 부모 pom.xml에서 mvn exec : exec를 실행하려고합니다. 그리고 나는이 오류를 얻는다. 하지만 제가 개별적으로 실행하면 작동합니다. – NareshKumar

2

해결되었습니다. 문제는 실행 파일이 Linux에서 다른 방식으로 작동한다는 것입니다. .sh 파일을 실행하려면 아래에 작성해야합니다. pom.xml에 작성하십시오.

<plugin> 
     <artifactId>exec-maven-plugin</artifactId> 
    <version>1.6.0</version> 
     <groupId>org.codehaus.mojo</groupId> 
     <executions> 
      <execution><!-- Run our version calculation script --> 
       <id>Renaming build artifacts</id> 
       <phase>package</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
       <configuration> 
        <executable>bash</executable> 
      <commandlineArgs>handleResultJars.sh</commandlineArgs> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
관련 문제