私はいくつかのオープン ソース プロジェクトに SourceForge を使用しており、SourceForge ファイル リリース システムへのリリースの展開を自動化したいと考えています。ビルドに Maven を使用していますが、手動で準備作業を行わない限り、標準の SFTP デプロイ メカニズムは機能しないようです。他のフォーラムで、SourceForge 専用の Wagon を作成することが唯一の方法であると示唆する古い投稿に出くわしました。
これについて最近経験した人はいますか?
私はいくつかのオープン ソース プロジェクトに SourceForge を使用しており、SourceForge ファイル リリース システムへのリリースの展開を自動化したいと考えています。ビルドに Maven を使用していますが、手動で準備作業を行わない限り、標準の SFTP デプロイ メカニズムは機能しないようです。他のフォーラムで、SourceForge 専用の Wagon を作成することが唯一の方法であると示唆する古い投稿に出くわしました。
これについて最近経験した人はいますか?
これをテストして確認することはできませんが、プラグインを作成しなくても可能だと思います。
SCP を使用して SourceForge にデプロイでき、maven-deploy-plugin はSCP を使用するように構成できるため、動作するはずです。SCP 経由でサイトを SourceForge にデプロイすることもできます。
カンマ区切りで「結合された」ユーザー名を使用するように、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
次に、dietributionManagement セクションのサイト 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 プラグインを使用することです。
次のコードを 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>
これは自分で書かないといけないようです。
これは実際にはそれほど難しいことではありませんでした。最初に、このsourceforgeサイトの指示に従ってmvn site:deployを動作させました。基本的に、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、sourcesなどを私のsourceforgeプロジェクトのWebサイトにアップロードします。プロジェクトのWebサイトsourceforgeの/maven2フォルダーにアクセスしようとする場合は、ディレクトリリストがデフォルトでオフになっていることと、その修正方法を教えてください。サーバーシェルでこれを行うには、次の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 のようにトンネルを確立する必要はありません。
これを何度も試した後、ようやく動作するようになりました-scpではなくsftp で。これは UNIX ボックス (または Mac) から動作するはずです。Windoze の sftp クライアントについてはわかりません。私は mvn バージョン 2.2.0 を使用していますが、特別なプラグインがインストールされているとは思いません。これにより、さまざまな mvn パッケージがプロジェクト ページの [ファイル] セクションにデプロイされます。
機能させるには、設定で次のように変更する必要があります。
私の $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
CruiseControlはリリースを SFEE にアップロードでき、Maven および Maven2 でも動作することがわかりました。
Maven SourceForge プラグインは Maven 2 では動作しません。また、このプラグインはサポートされなくなった FTP を使用していると思います。