2014-08-29 47 views
0

我試圖在包含源代碼的maven項目上使用maven package,該程序位於本地計算機上。我已經添加了他們作爲我的IDE依賴關係(在我的情況的IntelliJ),但每當我試圖建立我的項目,它給我的錯誤信息Maven忽略無法找到特定程序包的符號

/location/to/package/and/Class.java:[##,##] error: cannot find symbol 
symbol: variable SomeRandomClass 
location: class SomeClassThatTheVariableWasLocatedIn 

什麼我問的是,如果有一種方式製作特定的軟件包,例如my.package及其所有內容來自(包括子包),從生成錯誤。

PS:需要排除的軟件包應該是未在Maven中添加爲依賴項目的項目。

回答

1

沒有辦法做到這一點。

這是Java編譯器(而不是Maven)抱怨丟失的符號。它無法編譯引用缺少的包的類。 Java語言不允許這樣做。缺少的符號在編譯代碼時有可用。

你有三種選擇:

  • 創建一個新的Maven構件包含了「失蹤」的軟件包,並添加依賴到需要它們的其他模塊。

  • 將「丟失」包移到現有模塊中。

  • 不要試圖構建缺少依賴關係的類。

0

如果你想跳過編譯一些源文件(例如,在你的源代碼,可選的,因爲外部依賴的是失敗的),你可以用maven-compiler-pluginexcludes configuration parameter嘗試。

I.e.下面將排除任何文件夾sunshine/web/shaker/commons/下(源)(它會變得從項目中刪除的IDE):

 <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <excludes> 
        <exclude>sunshine/web/shaker/commons/**</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 

的文檔是不是給我介紹什麼是正確的格式爲元素很清楚(例如,我以前試着指定整個軟件包的名稱,但失敗了),因此您可能需要嘗試一下。