이것은 내가 직면 한 상황입니다. 현재 두 개의 Maven 프로젝트가 있지만 종속성, 리포지토리 등 (부모)을 설명하는 것은 두 개뿐입니다. 다른 쪽의 pom.xml을 상속받은 자식. 미래에 만들어 질 모듈이 아이와 같은 모델을 따라 더 많아 질 것입니다.exec 플러그인을 사용하여 Maven 3에서 스크립트를 실행하면 차단됨 -
우리는 프로젝트 사이트 (maven-site-plugin으로 생성)를 sftp을 통해서만이 시점에 액세스 할 수있는 위치에 배포하기로 결정했습니다. 그리고 내가 sftp 프로토콜을 통합 할 수 없기 때문에 <distributionManagement>
에 사이트 위치를 정의하는 것이 불가능하다는 것을 알았습니다. (왜건 -ssh-external를 사용해 보았습니다.)
echo "Uploading the site.."
lftp -u ${username},${password} sftp://${host} <<EOF
mirror -R --delete-first $sitedir $remotedir
echo "Exiting from lftp.."
bye
EOF
echo "Terminating script execution.."
이 :
은 결과, 나는 상을 사이트 배포 원격 컴퓨터에 연결하고 우리의 사이트 동안 전개되는 로컬 폴더의 내용을 업로드하는 스크립트를 만들었습니다 상위 사이트에 대해 완벽하게 작동하고 로컬에서 생성 된 바로 사이트를 업로드하지만 자식이 스크립트 끝 부분에 도달하면 올바르게 끝내지 않고 Terminating script execution..
을 인쇄하여 그대로 유지합니다.
저는 Maven 플러그인 (v. 3.0.2)이있는 마지막 버전 인 Eclipse (3.7)를 사용하고 있습니다. Eclipse에서 사이트를 생성하고 배포하기 위해 부모 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 실행> Maven 빌드 ...>parent clean site-deploy
을 마우스 오른쪽 버튼으로 클릭했습니다.
이들의 부분입니다 부모의 pom.xml
: 나는 간부 플러그인을 구성하는 여러 가지 방법을 시도했습니다
<build>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>sh</id>
<phase>site-deploy</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>sh</executable>
<arguments>
<argument>../parent/publish-site.sh</argument>
<argument>${localsitedir}/child</argument>
...
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</build>
(pluginManagement
를 사용하여 상속하지 않고 :
<distributionManagement>
<!-- Generate the site locally, then it'll be uploaded to the server -->
<!-- Children will append their artifact ID to the base url -->
<site>
<id>project-name</id>
<name>Project Name</name>
<url>file://${env.HOME}/testsite/</url>
</site>
</distributionManagement>
...
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
<configuration>
...
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>sh</id>
<phase>site-deploy</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>sh</executable>
<arguments>
<argument>publish-site.sh</argument>
<argument>${localsitedir}</argument>
...
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
그리고 아이에서
부모의 플러그인 구성 및 인수 부분 만 다시 작성 등). 스크립트 완료시 항상 차단되어 실행을 종료하지 않습니다.사이트가 올바르게 업로드되었지만 당연히 사이트를 업데이트 할 때마다 수동으로 Maven 빌드 실행을 종료하고 싶지는 않습니다. 또한 프로젝트의 이슈를 Jenkins 서버에 배포 할 계획입니다 그래서 사이트 배포가 그때까지는 잘 될 것입니다.) ,
어쩌면 'lftp가이'종료되지 않는 프로세스를 시작
:
아마도 바보 같지만 publish-site.sh 끝 부분에 exit 0 문을 추가하려고 했습니까? – drgn