これは私が直面している状況です:現時点では、依存関係、リポジトリなど(親)を記述する2つのMavenプロジェクト、もう一方のpom.xmlを継承する子です。子どもと同じモデルに従って、今後作成されるモジュールが増えます。execプラグインを使用してMaven 3からスクリプトを実行するとブロックされます
私たちは、この時点でアクセス可能な場所にsftpを介してのみプロジェクトのサイト(maven-site-pluginで生成)を展開することに決めました。そして私は<distributionManagement>
でサイトの場所を定義することは不可能であることを発見しました。なぜなら私はsftpプロトコル(私はwagon-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)を備えた最後のバージョン(3.7)であるEclipseを使用しています。 Eclipseでサイトを生成してデプロイするには、親プロジェクト> Run as> Maven build ...>parent clean site-deploy
を右クリックしました。
これらは親のpom.xml
の一部である:
<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>
と子から:
<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
を使用せずに(のexecプラグインを設定するさまざまな方法を試してみました親のプラグインの設定、引数部分の書き換えなど)、スクリプトを終了すると常にブロックされ、実行を終了しません。
サイトが正しくアップロードされていますが、サイトを更新するたびにMavenビルドの実行を手動で終了しないようにします(また、プロジェクトからジェンキンスサーバーにアーチファクトを展開する予定ですサイトの展開はうまくいけばうまくいくだろう)。
愚かに聞こえるかもしれませんが、publish-site.shの最後にexit 0ステートメントを追加しようとしましたか? – drgn