0

archlinux VM で jetty 8 サーバーを実行しています。bftpd を FTP サーバーとしてインストールし、Maven プロジェクトを次のように構成しました。

...
<distributionManagement>
    <repository>
        <id>personal-ftp-repository</id>
        <url>ftp://www.example.com</url>
    </repository>
</distributionManagement>
...
<extension>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-ftp</artifactId>
    <version>1.0-beta-6</version>
</extension>
...

distributionManagement に指定された名前のリポジトリは settings.xml で正しく定義されており、mvn deploy の実行時にアセンブルされた WAR を正しくアップロードしているため、デプロイは機能します。

しかし、アップロードされたファイルは不要なファイル権限を取得します。私は bftpd UMASK を 000 に設定しました。これにより、アップロードされたディレクトリでは 777、アップロードされたファイルでは 666 のファイル許可が得られます。しかし、これらはサーバーによって実行可能ではないため、jetty はそれらを提供できません。

WAR ファイルのアクセス許可を手動で 777 に切り替えると、ファイルは意図したとおりに提供されます。しかし、mvn deploy を介して新しいバージョンの WAR をアップロードしようとすると、FTP サーバーの応答: 553 エラー: リモート ファイルは書き込み保護されていると報告されます。jetty サーバーが停止していても。

古いものを手動で削除せずにWARを展開し、展開してからファイルのアクセス許可を手動で設定する方法が必要ですが、見つかりません。

4

2 に答える 2

0

デフォルトでは、FTP の DELE コマンドは BFTPD で無効になっています。/etc/bftpd.conf で有効にすると、デプロイの失敗が解決されました。そのため、デプロイの目標は最初に古いファイルを削除してから新しいファイルをアップロードしようとするようです。それも知りませんでした。

于 2012-05-28T14:42:11.000 に答える
0

あなたが使っているサービスはわかりませんが、Tomcat を使っているなら..これを試してみるのもいいかもしれません..

  1. コマンドを開く
  2. pom.xml が存在するディレクトリに移動します。
  3. コマンドを入力 --> mvn clean install tomcat:deploy. (以降の実行では tomcat:undeploy tomcat:deploy、または単純に tomcat:redeploy を使用して、前のデプロイメントを最初に削除します。)

この単一のコマンド文字列は、次のすべてを行います。

  • サービス/ターゲット出力フォルダーが既に存在する場合は削除します (mvn clean 単独と同じ)
  • フォルダーを再作成し、そこに Java クラスを生成してコンパイルします (mvn パッケージ)
  • Web サービス プロバイダーの WAR ファイルと JAR ファイルを作成します。
  • JAR と WAR をローカルの Maven リポジトリにインストールします (mvn install)
  • 以前の WAR ファイルをアンデプロイします (tomcat:undeploy または tomcat:redeploy も使用している場合)。
  • 新しい WAR ファイルを Tomcat にデプロイします。(mvn tomcat:デプロイ)
于 2012-05-27T15:12:02.073 に答える