日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

linux – 如何使用scp將maven3工件部署到遠(yuǎn)程服務(wù)器

 印度阿三17 2019-05-17

我想擁有自己創(chuàng)建的工件的maven存儲(chǔ)庫(kù),但我在嘗試將maven 3工件部署到自定義服務(wù)器時(shí)遇到問(wèn)題.為了更好地解釋這一點(diǎn),我將提供一些信息:

>我正在使用Maven 3
>我正在使用Eclipse Keppler
>我正在使用jenkins
>遠(yuǎn)程服務(wù)器正在運(yùn)行Ubuntu Server 11.04
> Jenkins正在Ubuntu服務(wù)器上運(yùn)行
>我的本地計(jì)算機(jī)正在運(yùn)行Windows XP

我的第一次嘗試是用我的機(jī)器.我在Eclipse中運(yùn)行Maven來(lái)進(jìn)行部署,一切正常.我將以下內(nèi)容添加到我的項(xiàng)目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>  

所以在我的本地機(jī)器上它可以工作,但我需要使用Jenkins來(lái)完成這項(xiàng)工作.我修改了Jenkins settings.xml,因?yàn)樗贚inux上運(yùn)行,所以不需要sshExecutable. Jenkins settings.xml看起來(lái)像

<servers>  
      <server>  
          <id>my server id</id>  
         <username>server username</username>   
         <password>server password</password> 

     </server>  
 </servers>  

然后我修改了pom.xml來(lái)執(zhí)行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>

但根據(jù)這個(gè)頁(yè)面https://cwiki./confluence/display/MAVEN/Maven 3.x Compatibility Notes maven 3不支持scp.我以任何方式運(yùn)行它,我從Jenkins日志中收到以下錯(cuò)誤消息

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,我會(huì)收到另一條錯(cuò)誤消息

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 : 

我可以進(jìn)行部署的唯一方法是分兩步完成

>配置Jenkins以實(shí)現(xiàn)安裝目標(biāo)
>從命令行運(yùn)行以下命令

mvn deploy:deploy-file -DgroupId=$groupId -DartifactId=$artifactId
-Dversion=$version -Dpackaging=jar -Dfile=path/to/file.jar -Durl=scp://my server//path/to/my/repository -DrepositoryId=my repository id

我嘗試了很多東西,包括將該命令寫入Jenkins目標(biāo),但每次我在Jenkins中使用scp命令時(shí),構(gòu)建都會(huì)失敗.

任何想法如何解決這個(gè)問(wèn)題將不勝感激.

解決方法:

我有興趣看看是否有任何真正的Maven解決方案.我一直使用Maven Antrun插件修復(fù)此問(wèn)題,如下所示:

<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>

關(guān)于此的一些注意事項(xiàng):我通過(guò)運(yùn)行到部署階段并提供deployment.server設(shè)置來(lái)激活此配置文件.為方便起見(jiàn),我將相應(yīng)的設(shè)置添加到我的settings.xml中,這樣我就不必每次都在命令行上提供這些設(shè)置:

<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>

我跳過(guò)實(shí)際的部署目標(biāo),因?yàn)樗鼘⒃谖疫\(yùn)行到部署階段時(shí)執(zhí)行,這是我不想要的.

來(lái)源:http://www./content-3-193651.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多