2011-01-13 216 views
0

我創建了此配置文件,用於通過SCP在服務器上部署工件。我知道Ant的scp任務是可選的,因此我添加了依賴關係。忽略Maven插件依賴關係

<profiles> 
     <profile> 
      <id>remote-deploy</id> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>scp</id> 
           <phase>install</phase> 
           <configuration> 
            <tasks> 
             <scp .../> 
             <sshexec .../> 
            </tasks> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
         <dependencies> 
          <dependency> 
           <groupId>org.apache.ant</groupId> 
           <artifactId>ant-jsch</artifactId> 
           <version>1.7.1</version> 
          </dependency> 
          <dependency> 
           <groupId>com.jcraft</groupId> 
           <artifactId>jsch</artifactId> 
           <version>0.1.42</version> 
          </dependency> 
         </dependencies> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

然而,當我運行的配置文件,我結束了

的螞蟻BuildException已發生: 問題:無法創建任務或鍵入 SCP原因:類 org.apache .tools.ant.taskdefs.optional.ssh.Scp 未找到。 這看起來像是Ant的可選組件之一。操作:檢查 了相應的可選JAR 在 -ANT_HOME \ lib中 -the IDE Ant配置對話框

存在,不要驚慌,這是一種常見的 問題。最常見的原因是 缺少JAR。

這不是一個錯誤;它是一個 配置問題

是否有可能maven無法下載這些依賴或它只是忽略它們?

回答

1

問題是Maven(2.2.1)沒有下載依賴關係。在將Maven升級到版本3後,我發現了這個問題。出於某種原因,新版本下載了插件依賴關係,並且奇蹟般地開始工作。

我懷疑問題是在舊版本的Maven的設置 - pluginRepository未配置。

0

maven很可能已經下載了jar,但它不在ant的classpath中。如果目標是使用maven部署工件,則應該使用Maven Deploy Plugin。你在做什麼似乎是一個迂迴的方式。

+0

Maven部署插件不是一個選項,因爲我沒有部署到遠程存儲庫,但遠程服務器 - 我仍然需要執行一些特定於服務器的unix命令。 – 2011-01-14 09:56:40

0

有一個maven-antrun-插件bug entry,這可以解釋爲什麼這是在Maven的2發生的事情,他們還描述workarounds

在多模塊構建,如果有多個勁歌配置Maven的antrun - 插件,第一個(?)似乎贏了,所以後來在構建鏈的人重新使用早期poms的antrun配置,因此錯過了不同的東西...

在我的問題案例中,選擇使用Maven-3,問題似乎是固定的,而不是使用Maven-2的解決方法。這樣做的另外一個好處就是加速 - 現在花6分鐘而不是10分鐘。但是,如果Maven-3不適合你,我會嘗試解決方法...