【问题标题】:How to use Wagon maven plugin with FTPS如何在 FTPS 中使用 Wagon maven 插件
【发布时间】:2019-11-27 17:23:13
【问题描述】:

我正在使用以下配置通过 FTPS 协议将文件上传到远程服务器:

<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
        <version>3.0.0</version>
    </extension>
</extensions>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <configuration>
        <skip>true</skip>
        <url>ftps://username:password@ip_address</url>
        <fromDir>${project.build.directory}</fromDir>
        <toDir>.</toDir>
    </configuration>
    <executions>
        <execution>
            <id>upload</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如果我在 url 参数中只使用 FTP 而不是 FTPS 目标会成功执行并将数据发送到远程服务器,但是当我使用 FTPS 出于安全原因,我收到以下错误:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload (default-cli) on project XXX: The parameters 'url' for goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload are missing or invalid
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'url' for goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload are missing or invalid
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:641)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:594)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)

'

【问题讨论】:

  • 你能提供整个例外吗?
  • 您的示例中有一个错字。在配置 &lt;&lt;url&gt;ftps://username:password@ip_address&lt;/url&gt; 内的 URL 元素中有一个双 &lt;。不确定这是您的示例还是您的实际代码中的拼写错误?
  • 更新:提供了整个异常@Theo
  • 错字只是在我的例子@SimplyGed
  • @aminedev 你试过在配置中使用&lt;endpointChecking&gt;false&lt;/endpointChecking&gt;吗?

标签: maven ftps maven-wagon-plugin wagon


【解决方案1】:

我使用以下配置解决了这个问题:

Pom.xml:

 <extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
        <version>3.0.0</version>
    </extension>
</extensions>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <configuration>
        <serverId>serverid</serverId>
        <skip>true</skip>
        <url>ftps://ip_address:port</url>
        <fromDir>${project.build.directory}</fromDir>
        <toDir>.</toDir>
    </configuration>
    <executions>
        <execution>
            <id>upload</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Settings.xml:

   <server>
        <id>serverid</id>
        <username>XXXXXX</username>
        <password>XXXXXX</password>
        <configuration>
            <endpointChecking>false</endpointChecking>
            <securityProtocol>TLS</securityProtocol> 
            <implicit>true</implicit>
            <passiveMode>true</passiveMode>
        </configuration>
    </server>

谢谢!

【讨论】:

    【解决方案2】:

    我无法在我的环境中测试答案,但 Wagon 似乎支持带有 FTP 提供程序的 FTPS 模式。

    但是,documentation 声明您应该为此将securityProtocol 配置为 FTPS,因为默认为 TLS。

    // settings.xml
    <server>
        <id>ftp.server.id</id>
        <username>username</username>
        <password>password</password>
        <configuration>
             ....
             <securityProtocol>FTPS</securityProtocol>   <-- !!!
        </configuration>
    </server>
    

    【讨论】:

    • 文档中有错误,安全协议只允许 SSL 或 TLS 值:' /** 使用 SSL/TLS 协议。 */ 私有字符串协议 = DEFAULT_PROTOCOL; '
    【解决方案3】:

    我最近遇到了类似的问题。就我而言,因为我的 FTP 服务器的证书是自签名的,我确实必须禁用 endpointChecking:

    <endpointChecking>false</endpointChecking>
    

    但是,Wagon FTP 提供商似乎也不支持加密数据连接。我在the code 中没有看到

    FTPSClient.execProt("P");
    

    由于我正在运行vsftpd 作为我的 FTP 服务器,因此有必要在服务器端也允许未加密的数据连接:

    # vsftpd.conf 
    ...
    force_local_data_ssl=NO
    

    在我的例子中,使用&lt;implicit&gt; 设置会适得其反,因为vsftpd 默认情况下会协商端口而不是使用隐式端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2010-10-25
      相关资源
      最近更新 更多