Maven으로 Linux 셸 명령을 실행하고 싶습니다. 내가 시도한 것은 다음과 같습니다.
<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>
답변
나를 위해 일한 것은 다음과 같습니다.
<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>
답변
여기서 문제는 예상되는 것이 무엇인지 모른다는 것입니다 . 현재 설정에서 명령 줄에서 플러그인을 호출하면 다음과 같이 작동합니다.
$ mvn exec : exec [정보] 프로젝트 검색 중 ... [정보] ----------------------------------------------- ------------------------- [정보] 건물 Q3491937 [정보] 작업 세그먼트 : [exec : exec] [정보] ----------------------------------------------- ------------------------- [정보] [exec : exec {execution : default-cli}] [정보] 노트북 [정보] ----------------------------------------------- ------------------------- [정보] 빌드 성공 [정보] ----------------------------------------------- ------------------------- ...
전역 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>
그리고:
$ mvn 컴파일 [정보] 프로젝트 검색 중 ... [정보] ----------------------------------------------- ------------------------- [정보] 건물 Q3491937 [정보] 작업 세그먼트 : [컴파일] [정보] ----------------------------------------------- ------------------------- [정보] [자원 : 자원 {실행 : 기본 자원}] [정보] 'UTF-8'인코딩을 사용하여 필터링 된 리소스를 복사합니다. [정보] 존재하지 않는 resourceDirectory / home / pascal / Projects / Q3491937 / src / main / resources 건너 뛰기 [정보] [컴파일러 : 컴파일 {실행 : 기본 컴파일}] [정보] 컴파일 할 항목이 없습니다. 모든 클래스가 최신 상태입니다. [정보] [exec : exec {execution : some-execution}] [정보] 노트북 [정보] ----------------------------------------------- ------------------------- [정보] 빌드 성공 [정보] ----------------------------------------------- ------------------------- ...
configuration
내부를 지정할 수 있습니다 execution
.
답변
해결되었습니다. 문제는 실행 파일이 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>
답변
2 옵션 :
- 어떤 단계에도 바인딩하지 않고 maven에서 명령을 실행하고 싶고, 명령을 입력하고 maven이 실행하고 , Maven이 무언가를 실행하고 싶을뿐입니다. compile / package / …
npm start
maven 으로 실행하고 싶다고 말하면 아래에서 얻을 수 있습니다.
mvn exec:exec -Pstart-node
이를 위해 아래 maven 섹션이 필요합니다.
<profiles>
<profile>
<id>start-node</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>npm</executable>
<arguments><argument>start</argument></arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
- 특정 단계에있는 동안 maven에서 임의의 명령 을 실행 하려고합니다. 예를 들어 설치 단계에있을 때 실행할
npm install
수 있습니다.
mvn install
작동하려면 아래 섹션이 필요합니다.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>npm install (initialize)</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
</execution>
답변
감사! 토머 벤 데이비드. 그것은 나를 도왔다. npm install을 언급했듯이 데모 폴더에 pip 설치를 수행하고 있습니다.
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>pip</executable>
<arguments><argument>install</argument></arguments>
<workingDirectory>${project.build.directory}/Demo</workingDirectory>
</configuration>