linux – 如何使用scp将maven3工件部署到远程服务器
我想拥有自己创建的工件的maven存储库,但我在尝试将maven 3工件部署到自定义服务器时遇到问题.为了更好地解释这一点,我将提供一些信息:
>我正在使用Maven 3 我的第一次尝试是用我的机器.我在Eclipse中运行Maven来进行部署,一切正常.我将以下内容添加到我的项目pom中 <build> ... <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh-external</artifactId> <version>1.0-beta-6</version> </extension> </extensions> ... </build> ... <distributionManagement> <repository> <id>my server id</id> <name>my repository name</name> <url>scpexe://my server//path/to/my/repository</url> </repository> </distributionManagement> 在我的settings.xml中,我添加了 <servers> <server> <id>my server id</id> <username>server username</username> <password>server password</password> <configuration> <sshExecutable>plink</sshExecutable> <scpExecutable>pscp</scpExecutable> </configuration> </server> </servers> 所以在我的本地机器上它可以工作,但我需要使用Jenkins来完成这项工作.我修改了Jenkins settings.xml,因为它在Linux上运行,所以不需要sshExecutable. Jenkins settings.xml看起来像 <servers> <server> <id>my server id</id> <username>server username</username> <password>server password</password> </server> </servers> 然后我修改了pom.xml来执行scp而不是scpexe <distributionManagement> <repository> <id>my server id</id> <name>my repository name</name> <url>scp://my server//path/to/my/repository</url> </repository> </distributionManagement> 但根据这个页面https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes maven 3不支持scp.我以任何方式运行它,我从Jenkins日志中收到以下错误消息 mavenExecutionResult exceptions not empty message : Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project myproject: Failed to deploy artifacts/metadata: No connector available to access repository my_repository (scp://my server//path/to/my/repository) of type default using the available factories WagonRepositoryConnectorFactory cause : Failed to deploy artifacts/metadata: No connector available to access repository my_repository (scp://my server//path/to/my/repository) of type default using the available factories WagonRepositoryConnectorFactory Stack trace : 如果我使用scpexe而不是scp,我会收到另一条错误消息 mavenExecutionResult exceptions not empty message : Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project pruebanueva: Failed to deploy artifacts: Could not transfer artifact {$groupId}:{$artifactId}:{$package}:{$version} from/to my_repository (scpexe://my server//path/to/my/repository): Error executing command for transfer cause : Failed to deploy artifacts: Could not transfer artifact {$groupId}:{$artifactId}:{$package}:{$version} from/to my_repository (scpexe://my server//path/to/my/repository): Error executing command for transfer Stack trace : 我可以进行部署的唯一方法是分两步完成 >配置Jenkins以实现安装目标
我尝试了很多东西,包括将该命令写入Jenkins目标,但每次我在Jenkins中使用scp命令时,构建都会失败. 任何想法如何解决这个问题将不胜感激. 解决方法
我有兴趣看看是否有任何真正的Maven解决方案.我一直使用Maven Antrun插件修复此问题,如下所示:
<profile> <id>deploy</id> <activation> <property> <name>deployment.server</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <phase>deploy</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <echo>deploying to server: ${deployment.server}</echo> <taskdef classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" name="scp" /> <scp file="${project.build.directory}/${project.artifactId}.war" password="${deployment.password}" todir="${deployment.userName}@${deployment.server}:" trust="true" verbose="true" /> <!-- <sshexec command="echo unity | sudo -S cp ${project.build.finalName}.jar $( if [ -e /station ]; then echo /station/lib; else echo /opt/pkg-station*/webapps/station*/WEB-INF/lib; fi )" host="${targetStation}" password="unity" trust="true" username="wps"></sshexec> --> </target> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.25</version> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-jsch</artifactId> <version>1.7.1</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </profile> 关于此的一些注意事项:我通过运行到部署阶段并提供deployment.server设置来激活此配置文件.为方便起见,我将相应的设置添加到我的settings.xml中,这样我就不必每次都在命令行上提供这些设置: <profile> <id>alwaysActiveProfile</id> <properties> <deployment.server>10.10.10.10</deployment.server> <deployment.userName>userName<deployment.userName> <deployment.password>password</deployment.password> </properties> </profile> 我跳过实际的部署目标,因为它将在我运行到部署阶段时执行,这是我不想要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- LINUX入门:LVM逻辑卷-创建、扩容、缩减、迁移、快照
- linux – Unix域套接字:accept()没有设置sun_path
- 磁盘 inodes 不足 Free inodes is less than 20% on volum
- Mach-O在ELF / linux中的两级命名空间符号解析
- linux – Apache使用100%的CPU. “ps”命令可以告诉我它在
- linux – 为什么在Xen下TCP接受()性能如此糟糕?
- linux – 使用intel igb(已解决)在3/5 raid6 iSCSI NAS设备
- linux – Debian Squeeze Hyper-V驱动程序
- Qt中关于QMouseEventbuttons()和QMouseEventbutton()的使用
- Nginx配置SSL证书部署HTTPS网站