2011-05-19 56 views
2

我想我還沒有真正有以前更要做到這一點,因爲我遇到了一個奇怪的問題。我正在嘗試從現有的Java項目生成JAR,然後將其放入Spring Maven項目中。我確信我正確地包含了它,之前我已經多次使用第三方JAR進行了這些操作(儘管它是一個Maven項目,我在其中包含了一些不明確的JAR並放在構建路徑等),但是與我JAR在Eclipse中表現得很好,就好像它包含了一樣,我有一個測試類從JAR導入一個類,實例化它等,並且它沒有顯示任何錯誤(在IDE中導入沒問題等),但是當我去做一個Maven安裝,我得到:創建SIMPL JAR文件,導入Maven項目,但Maven的安裝是complainining「包不存在」

[ERROR] /media/src/main/java/org/jadefalcon/automation/DataSetup/test.java:[11,15] package org.test does not exist 
[ERROR] /media/src/main/java/org/jadefalcon/automation/DataSetup/test.java:[21,2] cannot find symbol 

我試圖做一個Maven乾淨,但還是同樣的問題,該JAR類我與測試是這樣的:(試圖更復雜的一個,但隨後嘗試這對解決問題)

package org.test; 

public class something { 

    public String main() { 
     return "it is definitely working fine"; 
    } 

} 

這裏是我所產生的JAR(與源可見): https://docs.google.com/leaf?id=0BzB_xvrbRpbYODQyMjEzOWEtOTdjNS00YjM3LTlkZGUtNjY5NmIwN2RiNTRj&hl=en

因爲我而感到困惑和沮喪這樣我將不勝感激任何意見。由於

回答

1

由於這引起了我相當多的悲傷,我想我應該張貼我找到了解決辦法。顯然你不應該只在一個maven項目中包含一個常規的lib JAR(儘管我發誓我之前完成了它並且它工作正常),但我發現這種方式包括一個本地JAR,它不是從這個帖子構成一個存儲庫:

Can I add jars to maven 2 build classpath without installing them?

我做這個和它做行家安裝正確(其中版本和artifactId的只是由值)

 <dependency> 
    <groupId>org.test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0</version> 
    <scope>system</scope> 
    <systemPath>${basedir}/lib/testjar.jar</systemPath> 
</dependency> 
+0

*顯然你不應該只在一個maven項目中包含一個常規的lib JAR *。 **沒錯!** – 2011-05-20 07:16:39

+0

這並不是說我有,雖然認同,但它毫無意義的必須設置考慮到你還必須設置安全性等進行,對內部維護的罐子回購(當公司以外的人AREN它的東西「T應該有機會獲得),什麼是浪費時間..我的方式上述工程說,我會在那 – Rick 2011-06-09 21:35:25

2
  • 您可以在一個「常規」罐子你的maven項目 - 就像你所描述的那樣 - 儘管它不是ab這主要是因爲你甚至沒有爲該jar損失Maven的功能,而且也忽略了Maven依賴管理的全部重點:你必須將該jar包含在你的源代碼中才能構建。

  • 您當然也可以爲該jar創建一個Maven工件,使用Maven構建它,使用Maven進行安裝並將其用作普通的Maven依賴項。

  • 您還可以創建一個父.pom,有你相依項目作爲中有一個模塊,也是你的實際應用(或者你也真正的應用程序可以是你的父母)。詳見here

+0

是的,我理解,但它只是一個簡單的JAR由另一個開發我們的組織和內完成離開它我們的部署方式並不麻煩,以確保它始終包含在內,這似乎比設置存儲庫更容易,尤其是因爲我們還必須限制訪問權限 – Rick 2011-05-20 19:09:47