【问题标题】:Why maven deployment extension wagon-ftp not working?为什么 Maven 部署扩展 wagon-ftp 不起作用?
【发布时间】:2015-11-29 03:43:20
【问题描述】:

这里是maven项目的总结

mvn -v

Apache Maven 3.3.3 (79941 ... d4a06; 2015-04-22T17:57:37+06:00)
Maven home:  /path/to/apache-maven-3.3.3
Java version: 1.7.0_67, vendor: Oracle Corporation
Java home: /path/to/java/jdk1.7.0_67/jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <artifactId>chorke-base-parent</artifactId>
    <groupId>com.chorke.base</groupId>
    <version>1.0.00-SNAPSHOT</version>
    <name>chorke-base-parent</name>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.4.RELEASE</version>
        <relativePath />
    </parent>

    <properties>
        <maven.compiler.target>1.7</maven.compiler.target>
        <maven.compiler.source>1.7</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.build.timestamp.format>EEE, MMM dd yyyy, HH:mm Z</maven.build.timestamp.format>
    </properties>

    <distributionManagement>
        <repository>
            <id>releases.ftp</id>
            <url>ftp://127.0.0.1/maven2/releases</url>
        </repository>
        <snapshotRepository>
            <id>snapshots.ftp</id>
            <url>ftp://127.0.0.1/maven2/snapshots</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

    <modules>
        <module>chorke-comn-parent</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <excludes>
                            <exclude>**/*.md</exclude>
                            <exclude>**/*.groovy</exclude>
                            <exclude>**/.gitkeep</exclude>
                            <exclude>**/.gitignore</exclude>
                        </excludes>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
            </plugin>
        </plugins>

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

    <repositories>
        <repository>
            <id>snapshots</id>
            <url>http://127.0.0.1/maven2/snapshots</url>
            <snapshots><enabled>true</enabled><updatePolicy>interval:240</updatePolicy></snapshots>
            <releases><enabled>false</enabled><updatePolicy>never</updatePolicy></releases>
        </repository>
        <repository>
            <id>releases</id>
            <url>http://127.0.0.1/maven2/releases</url>
            <snapshots><enabled>false</enabled><updatePolicy>never</updatePolicy></snapshots>
            <releases><enabled>true</enabled><updatePolicy>daily</updatePolicy></releases>
        </repository>
    </repositories>

</project>

settings.xml

<settings xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>/path/to/local/repo</localRepository>
  <servers>
    <server>
        <id>releases</id>
        <configuration>
            <httpHeaders>
                <property>
                    <name>Authorization</name>
                    <value>Basic bWF2ZW46cGFzc3dvcmQ==</value>
                </property>
            </httpHeaders>
        </configuration>
    </server>
    <server>
        <id>snapshots</id>
        <configuration>
            <httpHeaders>
                <property>
                    <name>Authorization</name>
                    <value>Basic bWF2ZW46cGFzc3dvcmQ==</value>
                </property>
            </httpHeaders>
        </configuration>
    </server>
    <server>
        <id>releases.ftp</id>
        <username>maven</username>
        <password>password</password>
    </server>
    <server>
        <id>snapshots.ftp</id>
        <username>maven</username>
        <password>password</password>
    </server>
  </servers>
</settings>

此项目成功执行mvn clean install deploy -Njdk1.6.0_##mvn clean install -N 执行jdk1.7.0_##。当我为jdk1.7.0_## 附加部署时,例如:mvn clean install deploy -N 它会生成以下轨迹:

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project chorke-base-parent: Failed to retrieve remote metadata com.chorke.base:chorke-base-parent:2.0.00-SNAPSHOT/maven-metadata.xml: Could not transfer metadata com.chorke.base:chorke-base-parent:2.0.00-SNAPSHOT/maven-metadata.xml from/to snapshots.ftp (ftp://127.0.0.1/maven2/snapshots): Error transferring file via FTP: Connection reset -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project chorke-base-parent: Failed to retrieve remote metadata com.chorke.base:chorke-base-parent:2.0.00-SNAPSHOT/maven-metadata.xml: Could not transfer metadata com.chorke.base:chorke-base-parent:2.0.00-SNAPSHOT/maven-metadata.xml from/to snapshots.ftp (ftp://127.0.0.1/maven2/snapshots): Error transferring file via FTP

Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:196)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.read(BufferedReader.java:175)
    ... more

您能帮我为spring-boot 子模块完美配置wagon-ftp jdk1.7.0_## 或更高版本吗?

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.4.RELEASE</version>
    <relativePath />
</parent>

【问题讨论】:

  • 首先使用更多 uptodate version of wagon 以及为什么不使用真正的存储库管理器...比如 Nexus/Artifactory
  • 这里的所有版本看起来都像一个红鲱鱼,错误消息表明在本地主机上运行的FTP服务器((127.0.0.1/maven2/snapshots)不合作(连接重置)。
  • 这些是嵌入pom.xml 的私有存储库,其中Nexus/Artifactory 等公共存储库在$M2_HOME/conf/settings.xml 上全局配置。这些不是异常的原因。缺少正确版本的依赖,例如 wagon-ftpmaven-deploy-plugin 导致异常。
  • @Gimby 毫无疑问 ftp 服务器 ftp://127.0.0.1/maven2/snapshots 它可以与 Apache Maven 3.2.2jdk1.6.0_## 一起正常工作.这是使用 jdk 的更新版本时出现的问题。
  • 但是 Java 7 在连接到 FTP 服务器时会导致连接重置并不是一个已知问题,所以让我们继续假设它是一个环境问题。可能与 IPv6 有关,您可以尝试强制使用 IPv4。 superuser.com/questions/453298/…

标签: java maven maven-deploy-plugin maven-wagon-plugin maven-extension


【解决方案1】:

实际上这个问题是由于Java 7使用的IPv6而发生的。只需将选项放入 _JAVA_OPTIONS 环境变量即可解决此问题。例如,在 Linux 上,将以下内容放入您的 ~/.profile~/.bash_profile

export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

非常感谢 Gimby 提供的解决问题的指南。

【讨论】:

  • 请记住,您的问题不会消失:您的环境没有设置为正确处理 IPv6,而且很快就必须如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多