由于写保护,使用Maven部署到BFTP服务器失败

由于写保护,使用Maven部署到BFTP服务器失败,maven,deployment,ftp,Maven,Deployment,Ftp,我有一个jetty 8服务器运行在archlinux虚拟机上。我将bftpd安装为FTP服务器,并将我的maven项目配置如下: ... <distributionManagement> <repository> <id>personal-ftp-repository</id> <url>ftp://www.example.com</url> </repository&g

我有一个jetty 8服务器运行在archlinux虚拟机上。我将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>
...
。。。
个人ftp存储库
ftp://www.example.com
...
org.apache.maven.wagen
货车ftp
1.0-beta-6
...
my settings.xml中正确定义了为distributionManagement指定名称的repo,部署的工作原理与运行mvn deploy时正确上载组装好的WAR的工作原理相同

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

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


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

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

  • 打开命令
  • 导航到pom.xml所在的目录
  • 键入命令-->mvn clean install tomcat:deploy。(在后续运行中使用tomcat:undeploy-tomcat:deploy,或者简单地使用tomcat:redeploy,首先删除先前的部署。)
  • 此单个命令字符串执行以下所有操作:

    • 删除服务/目标输出文件夹(如果它已存在)(与mvn clean单独相同)
    • 重新创建文件夹,生成Java类并将其编译到其中(mvn包)
    • 为web服务提供者和JAR文件创建WAR文件
    • 将JAR和WAR安装到本地Maven存储库(mvn安装)
    • 取消部署上一个WAR文件(如果还使用tomcat:undeploy或tomcat:redeploy)
    • 将新WAR文件部署到Tomcat上。(mvn tomcat:deploy)

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

    服务/容器是Jetty,据我所知,重新部署到远程Jetty实例没有目标。您是否确保正确的目录和文件已经具有权限(恐怕您的FTP服务器响应错误553是由于授予错误的文件/目录权限造成的)…情况并非如此(见我的答案),但谢谢你的想法。