Maven:使用其ftp地址在本地存储库中安装jar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven:使用其ftp地址在本地存储库中安装jar相关的知识,希望对你有一定的参考价值。

我有我的maven本地存储库位于Windows机器上,我正在尝试使用eclipse使用jar的ftp地址(jar位于linux机器上)在此存储库中安装jar。这是我的settings.xmlpom.xml

的settings.xml

   <server>
    <id>{server_address}</id>
    <username>username</username>
    <password>password</password>
    <configuration>
        <endpointChecking>false</endpointChecking>
    </configuration>
  </server>

pom.hml

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.maven.bcone</groupId>
<artifactId>ArtifactName</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Sample</name>
<properties>
    <ics.version>17.4.5</ics.version>
    <ftp.dir>//sftp://username@{server_address}</ftp.dir>
</properties>

<dependencies>
    <dependency>
        <groupId>com.oracle.ics</groupId>
        <artifactId>cpi_omcs.jar</artifactId>
        <version>${ics.version}</version>
    </dependency>

</dependencies>
<build>
    <finalName>BuildName</finalName>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <id>install-cpi_omcs</id>
                    <phase>clean</phase>
                    <configuration>
                        <file>${ftp.dir}/home/steve/myJars/cpi_omcs.jar</file>
                        <groupId>com.oracle.ics</groupId>
                        <artifactId>cpi_omcs</artifactId>
                        <version>${ics.version}</version>
                        <packaging>jar</packaging>
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
    <repositories>
        <repository>
            <id>{server_address}</id>
            <name>158_bcone</name>
            <url>sftp://username@{server_address}</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
        </repository>
    </repositories>
  </project>

运行mvn:clean后,我得到以下错误

[错误]无法执行目标org.apache.maven.plugins:maven-install-plugin:2.5.2:项目BconeAdapter上的install-file(install-cpi_omcs):指定的文件'\ sftp: username @ {server_addres } home steve myJars cpi_omcs.jar'不存在 - > [帮助1]

jar文件存在于上述位置,但maven无法找到它。我在这里错过了什么?

答案

我能够使用这些maven插件来做到这一点

<properties>
    <ics.version>18.1.3</ics.version>
    <temp.dir>./temp/</temp.dir>
    <ftp.dir>scp://username:password@10.30.32.158</ftp.dir>
    <ics.dir>/u01/app/oracle/lib</ics.dir>
</properties>

    <build>
    <finalName>MyProject</finalName>
    <plugins>

        <!-- DOWNLOAD THE JAR FILES TO A TEMP FOLDER ON THE LOCAL MACHINE -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>wagon-maven-plugin</artifactId>
            <version>1.0</version>

            <executions>
                <execution>
                    <id>download-ftp-suite</id>
                    <configuration>
                        <url>${ftp.dir}:${ics.dir}</url>
                        <toDir>${temp.dir}</toDir>
                        <includes>
                            */**/*.jar
                        </includes>
                    </configuration>
                    <goals>
                        <goal>download</goal>
                    </goals>
                </execution>
              </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>

                <execution>
                    <id>install-one-of-the-downloaded-jars</id>
                    <phase>site</phase>
                    <configuration>
                        <file>${temp.dir}one-of-the-downloaded-jars.jar</file>
                        <groupId>com.oracle.ics</groupId>
                        <artifactId>one-of-the-downloaded-jars</artifactId>
                        <version>${ics.version}</version>
                        <packaging>jar</packaging>
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
               </executions>
        </plugin>
     </plugins>


    <extensions>
        <!-- Enabling the use of SSH IN ACCESSING FTP/SCP -->
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>3.0.0</version>
        </extension>
    </extensions>
</build>

通过这些更改,无需在settings.xml中添加服务器详细信息

另一答案

也许你应该使用maven-wagon。我不确定maven-install-plugin是否可以处理网络路径。

其余部分是Apaches页面的完全复制和粘贴,因为它是使解决方案正常工作所需的最低基本信息

来自Apache maven deploy plugin page

要使用FTP部署工件,您必须首先在POM的distributionManagement元素中指定使用FTP服务器,并在构建元素中指定一个扩展,该扩展将引入使用FTP部署所需的FTP工件:

<distributionManagement>
   <repository>
     <id>ftp-repository</id>
     <url>ftp://repository.mycompany.com/repository</url>
   </repository>
</distributionManagement>

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

您的settings.xml将包含一个服务器元素,其中该元素的id与上面POM中指定的FTP存储库的id匹配:

<settings>
   ...
   <servers>
      <server>
         <id>ftp-repository</id>
         <username>user</username>
         <password>pass</password>
      </server>
  </servers>
  ...
</settings>

当然,在尝试使用Maven进行部署之前,您应该确保可以手动登录到指定的FTP服务器。一旦确认所有内容都已正确设置,您现在可以使用Maven部署工件:

mvn deploy

以上是关于Maven:使用其ftp地址在本地存储库中安装jar的主要内容,如果未能解决你的问题,请参考以下文章

创建本地 Maven 存储库

sh 在maven存储库中安装外部库jar

linux 中安装 maven

如何使用 PAT 从本地 Azure Artifacts 存储库在 docker 容器中安装 powershell 模块?

如何在我的本地 m2 存储库中安装 POM?

Eclipse中安装Maven插件总结