Maven ビルドから SourceForge File Release System にアーティファクトをデプロイするにはどうすればよいですか?
-
08-06-2019 - |
質問
私はいくつかのオープン ソース プロジェクトで SourceForge を使用しており、SourceForge ファイル リリース システムへのリリースの展開を自動化したいと考えています。私はビルドに Maven を使用していますが、標準の SFTP デプロイメント メカニズムは、手動で準備作業を行わない限り機能しないようです。他のフォーラムで、唯一のアプローチが SourceForge 専用の Wagon を作成することであると示唆する古い投稿をいくつか見つけました。
最近このような経験をした人はいますか?
解決
これをテストして確認することはできませんが、プラグインを作成しなくても可能だと思います。
あなたはできる SCP を使用して SourceForge にデプロイする, 、maven-deploy-plugin は次のように構成できます。 SCPを使用する それでうまくいくはずです。を展開することもできます サイトからSourceForgeへ SCP経由で。
カンマ区切り文字を「組み合わせた」ユーザー名を使用するように、settings.xml で SourceForge サーバーを構成します。これらの資格情報を使用して:
SourceForge username: foo
SourceForge user password: secret
SourceForge project name: bar
Path: /home/frs/project/P/PR/PROJECT_UNIX_NAME/
- Substitute your project UNIX name data for /P/PR/PROJECT_UNIX_NAME
サーバー要素は次のようになります。
<server>
<id>sourceforge</id>
<username>foo,bar</username>
<password>secret</password>
</server>
POM の distributionManagement セクションは次のようになります。
<!-- Enabling the use of FTP -->
<distributionManagement>
<repository>
<id>ssh-repository</id>
<url>
scpexe://frs.sourceforge.net:/home/frs/project/P/PR/PROJECT_UNIX_NAME</url>
</repository>
</distributionManagement>
最後に、ssh-external を使用することを宣言します。
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh-external</artifactId>
<version>1.0-alpha-5</version>
</extension>
</extensions>
</build>
これがうまくいかない場合は、上記のサイト参照で推奨されているアプローチを使用できる可能性があります。ユーザー名とプロジェクト グループを使用して、shell.sourceforge.net にシェルを作成します。
ssh -t <username>,<project name>@shell.sf.net create
次に、diestributionManagement セクションのサイト URL で (web.sourceforge.net の代わりに)shell.sourceforge.net を使用します。
<url>scp://shell.sourceforge.net/home/frs/project/P/PR/PROJECT_UNIX_NAME/</url>
他のヒント
例をsourceforge.netにアップロードしました。 http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/
svn 経由でチェックアウトできるので、sourceforge.net ファイル システム領域と Web サイトへのアップロードとダウンロードにプラグインを使用する方法を確認できます。
アップロードする主なポイントは、sftp を使用することです。
これと同様のコードを pom.xml に追加します。
<distributionManagement>
<!-- use the following if you're not using a snapshot version. -->
<repository>
<id>sourceforge-sf-mvn-plugins</id>
<name>FRS Area</name>
<uniqueVersion>false</uniqueVersion>
<url>sftp://web.sourceforge.net/home/frs/project/s/sf/sf-mvn-plugins/m2-repo</url>
</repository>
<site>
<id>sourceforge-sf-mvn-plugins</id>
<name>Web Area</name>
<url>
sftp://web.sourceforge.net/home/groups/s/sf/sf-mvn-plugins/htdocs/${artifactId}
</url>
</site>
</distributionManagement>
同様のコードを settings.xml に追加します
<server>
<id>sourceforge-sf-mvn-plugins-svn</id>
<username>tmichel,sf-mvn-plugins</username>
<password>secret</password>
</server>
<server>
<id>sourceforge-sf-mvn-plugins</id>
<username>user,project</username>
<password>secret</password>
</server>
ダウンロードの主なポイントは、wagon-http-sourceforge Maven プラグインを使用することです。次を参照してください。sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html
次のコードを pom.xml に追加してください。
<repositories>
<repository>
<id>sourceforge-svn</id>
<name>SF Maven Plugin SVN Repository</name>
<url>http://sf-mvn-plugins.svn.sourceforge.net/svnroot/sf-mvn-plugins/_m2-repo/trunk</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>sourceforge-frs</id>
<name>SF Maven Plugin Repository</name>
<url>http://sourceforge.net/projects/sf-mvn-plugins/files/m2-repo</url>
</pluginRepository>
</pluginRepositories>
<build>
<extensions>
<extension>
<groupId>net.sf.maven.plugins</groupId>
<artifactId>wagon-http-sourceforge</artifactId>
<version>0.4</version>
</extension>
</extensions>
:
</build>
これは自分で書かなければいけないようです。
これを何度か試した後、ようやく動作するようになりました。 SFTP ない scp。これは Unix ボックス (または Mac) から動作するはずです -- Windoze の sftp クライアントについてはわかりません。私は mvn バージョン 2.2.0 を使用していますが、特別なプラグインはインストールされていないと思います。これにより、さまざまな mvn パッケージがプロジェクト ページの [ファイル] セクションにデプロイされます。
機能させるには、設定で以下を変更する必要があります。
- user -- SourceForce ユーザー名に置き換えます。
- Secret -- パスワードに置き換えます
- ormlite -- プロジェクト名に置き換えます
- /o/or/ -- プロジェクト名の最初の文字と最初の 2 文字に置き換えます。
私の $HOME/.m2/settings.xml ファイルには、SF サーバー用に次のものが含まれています。
<server>
<id>sourceforge</id>
<password>secret</password>
<filePermissions>775</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
ユーザー名はユーザー名、プロジェクトにする必要があり、複数のパッケージを SF にデプロイしたいため、settings.xml ファイルにはユーザー名を指定しません。次に、ormlite パッケージの pom.xml ファイルには次のようになります。
<distributionManagement>
<repository>
<id>sourceforge</id>
<name>SourceForge</name>
<url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/releases
</url>
</repository>
<snapshotRepository>
<id>sourceforge</id>
<name>SourceForge</name>
<url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/snapshots
</url>
</snapshotRepository>
</distributionManagement>
明らかに、/releases および /snapshots ディレクトリのサフィックスは、ファイル階層に応じて変更できます。
ここで、timp = ユーザー、webmacro = プロジェクト
scp URL が機能しません:
scp://timp,webmacro@shell.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2/
SFTP URL は機能します:
sftp://timp,webmacro@web.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2
またはプロジェクトのリリース成果物の場合:
sftp://timp,webmacro@web.sourceforge.net:/home/frs/project/w/we/webmacro/releases
scp はshell.sourceforge.netに対して機能しますが、使用する前にシェルを作成する必要があります。
ssh -t timp,webmacro@shell.sourceforge.net create
これは実際にはそれほど難しいことではありませんでした。まず、次の手順に従って mvn site:deploy を動作させました。 このsourceforgeサイト. 。基本的に、次のようにしてsourceforgeシェルを起動します。
ssh -t user,project@shell.sourceforge.net create
これにより、(プロジェクト名に応じて) 次のようなパス上のプロジェクトにマウントされたフォルダーを含むシェルが最後に作成されます。
/home/groups/c/ch/chex4j/
そのシェルでは、sourceforge サーバー上のプロジェクト Apache フォルダー「htdocs」の下にリポジトリ用のフォルダーを作成しました。
mkdir /home/groups/c/ch/chex4j/htdocs/maven2
settings.xml で、Maven がログインできるように、そのシェル サーバーにユーザー名とパスワードを設定します。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd/">
<servers>
<server>
<id>chex4j.sf.net</id>
<username>me,myproject</username>
<password>password</password>
<filePermissions>775</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
</settings>
pom.xml では、設定ファイルでパスワードを設定した ID でサーバーに名前を付けるように distibutionManagement セクションを設定する必要があるだけです。
<distributionManagement>
<site>
<id>chex4j.sf.net</id>
<url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/
</url>
</site>
<repository>
<id>chex4j.sf.net</id>
<name>SourceForge shell repo</name>
<url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/maven2</url>
</repository>
</distributionManagement>
ここで、リポジトリ エントリは mvndeploy コマンド用であり、サイト エントリは mvn site:deploy コマンド用です。次に、シェル接続を開始してサーバー側を起動し、ローカル側で次を実行するだけです。
mvn deploy
これにより、jar、pom、ソースなどが私のsourceforgeプロジェクトのWebサイトにアップロードされます。プロジェクト Web サイトの /maven2 フォルダーにアクセスしようとすると、sourceforge は親切に、ディレクトリーのリストがデフォルトでオフになっていることと、その修正方法を教えてくれます。これをサーバー シェルで行うには、次の Apache オプションを含む .htaccess ファイルを htdocs/maven2 フォルダーに作成します。
Options +Indexes
そうすれば、次のような Maven リポジトリが完成します。
http://chex4j.sourceforge.net/maven2/net/sf/chex4j/chex4j-core/1.0.0/
sf.net シェルは、リソースを浪費しないように数時間後にシャットダウンします。したがって、「ssh -t ...」を実行します。create」は、サイトまたはビルド成果物をデプロイする場合に使用します。
SourceForge ですべての Maven プロジェクト コードを参照して、作業設定を確認できます。
http://chex4j.svn.sourceforge.net/viewvc/chex4j/branches/1.0.x/chex4j-core/
SCP URL する 仕事。ただし、サーバー名の後に「:」を使用しないでください。MVN は、次のテストを整数 (ポート番号) として読み取ろうとします。
simbo1905 のようにトンネルを確立する必要はありません。
Maven SourceForge プラグインは Maven 2 では動作しません。また、このプラグインはサポートされなくなった FTP を使用していると思います。
見つけた クルーズコントロール リリースを SFEE にアップロードでき、Maven および Maven2 でも動作します