我試圖將一個構建任務添加到Maven POM文件中,以便我可以將一個jar文件以及一些xml文件傳輸到SFTP服務器(它是安裝了Tomcat的VM),但到目前爲止,我一直無法工作。使用Maven通過SFTP傳輸工件
我看了幾個鏈接,但他們要麼不符合要求,要麼缺少步驟,要麼不工作。我基本上是Maven的初學者,所以我不確定我是否正確地做。
需求是,我想調用一個Maven構建,命令行參數爲主機名,用戶名和密碼(我有工作),然後將jar文件和xml文件上傳到一個虛擬機與Tomcat通過SFTP運行(FTP不起作用,我不認爲SCP會工作,因爲我沒有passfile)。我也不想混淆主要的Maven settings.xml文件來添加連接細節,我發現的一些鏈接似乎依賴於。
到目前爲止,我有以下配置文件,使用FTP,但它不工作,因爲不使用SFTP。
<profiles>
<profile>
<!-- maven antrun:run -Pdeploy -->
<id>deploy</id>
<build>
<plugins>
<plugin>
<inherited>false</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<configuration>
<target>
<!-- <loadproperties srcFile="deploy.properties" /> -->
<ftp action="send" server="${server-url}"
remotedir="/usr/share/myappserver/webapps/myapp/WEB-INF/lib"
userid="${user-id}" password="${user-password}" depends="no"
verbose="yes" binary="yes">
<fileset dir="target">
<include name="artifact.jar" />
</fileset>
</ftp>
<ftp action="send" server="${server-url}"
remotedir="/var/lib/myappserver/myapp/spring"
userid="${user-id}" password="${user-password}" depends="no"
verbose="yes" binary="yes">
<fileset dir="src/main/resource/spring">
<include name="*.xml" />
</fileset>
</ftp>
<!-- calls deploy script -->
<!-- <sshexec host="host" trust="yes" username="usr" password="pw"
command="sh /my/script.sh" /> -->
<!-- SSH -->
<taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="maven.plugin.classpath" />
<taskdef name="ftp"
classname="org.apache.tools.ant.taskdefs.optional.net.FTP"
classpathref="maven.plugin.classpath" />
</target>
</configuration>
<dependencies>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-commons-net</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>jsch</groupId>
<artifactId>jsch</artifactId>
<version>0.1.29</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
我想換的FTP SFTP,並使用org.apache.tools.ant.taskdefs.optional.ssh.SFTP代替,但它似乎沒有工作。
所以總結一下,SFTP配置需要儘可能地自包含在pom文件中,當調用時會傳入主機url,用戶名和密碼等內容。
這似乎需要使用settings.xml,我不想使用它,因爲它需要其他開發人員更改它們的設置,而要求是將server-url/username/password作爲參數傳遞給Maven構建。 – matthewh86
@ matthewh86我知道將構件部署到Tomcat實例的情況,但我們通過Jenkins作業(取決於在其之前運行的構件的構建和測試作業的構建成功)來自動化它,所以適當的'settings.xml'位於Jenkins服務器上。在描述的情況下,開發人員可以將工件部署到未通過集成測試的Tomcat。這是真的嗎? –
要部署的構件需要單獨測試(使用它們自己的單元測試和maven構建),但還需要單獨部署到tomcat虛擬機,以便可以更快地集成測試它們,而不需要使用更新來重建虛擬機可能需要一個小時或更多的罐子。 編輯:我也可能誤解部署的使用。我認爲它需要更多地作爲可選的上傳目標,而不是發佈和發佈工件本身。 – matthewh86