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>
...

在我的 settings.xml 中正确定义了为 distributionManagement 指定名称的存储库,并且部署工作正常,因为它在运行 mvn deploy 时正确上传了组装的 WAR。

但是上传的文件会获得不需要的文件权限。我已将 bftpd UMASK 设置为 000,这导致上传目录的文件权限为 777,上传文件的文件权限为 666。但是这些服务器无法执行,因此码头无法为它们提供服务。

当我手动将 WAR 文件的权限切换到 777 时,该文件将按预期提供。但是当我尝试通过 mvn deploy 上传较新版本的 WAR 时,它报告 FTP 服务器响应:553 错误:远程文件被写保护。即使码头服务器已停止。

必须有一种方法来部署 WAR,而无需手动删除旧的,部署然后必须手动设置文件权限,但我找不到。

4

2 回答 2

0

我不知道您使用的是什么服务,但是如果您使用的是tomcat ..也许您可以试试这个..

  1. 打开cmd,
  2. 导航到 pom.xml 所在的目录
  3. 键入命令 --> mvn clean install tomcat:deploy。(在后续运行中使用 tomcat:undeploy tomcat:deploy 或简单的 tomcat:redeploy 以首先删除先前的部署。)

这个单一的命令字符串执行以下所有操作:

  • 如果服务/目标输出文件夹已经存在,则删除它(与单独的 mvn clean 相同)
  • 重新创建文件夹并生成 Java 类并将其编译到其中(mvn 包)
  • 为 Web 服务提供者和 JAR 文件创建 WAR 文件
  • 将 JAR 和 WAR 安装到本地 Maven 存储库 (mvn install)
  • 取消部署之前的 WAR 文件(如果还使用 tomcat:undeploy 或 tomcat:redeploy)
  • 将新的 WAR 文件部署到 Tomcat 上。(mvn tomcat:部署)
于 2012-05-27T15:12:02.073 回答
0

默认情况下,在 BFTPD 中禁用 FTP 的 DELE 命令。在 /etc/bftpd.conf 中打开它解决了失败的部署。因此,部署目标似乎首先尝试删除旧文件,然后上传新文件。那也不知道。

于 2012-05-28T14:42:11.000 回答