Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 53

0
votes
answers
23 views
+10

maven包:skip成功構建的子模塊

0

我試圖用--fail-at-end使用maven 3.3.9來構建一個多子模塊項目。運行這個階段的一個週期花費了很多時間(幾個小時),並且在每個週期中我都解決了構建一些子模塊和再次運行Maven構建(從另一個週期開始)的問題。 所以問題是:有沒有辦法迫使maven不要嘗試構建在以前的週期中成功構建的包?周圍的每一次 預先感謝maven包:skip成功構建的子模塊

+0

你真的在運行數小時以上的版本嗎?多少條代碼行(1000萬行?)?多少次測試? 10或5萬? – khmarbaise

沙发
0
1

這聽起來像你有一個多模塊項目,然後您嘗試通過的迭代過程得到一個完整的,成功打造...

build -> fail -> fix the failure -> rebuild 

...和您希望恢復發生故障的模塊的循環,而不是每次都構建整個項目。

的標準方法來這個用例是使用-rf

-rf, --resume-from 
    Resume reactor from specified project 

例如,如果命名moduleD模塊失敗,則如下重新運行構建:

mvn -rf :moduleD install 

更多細節in the docs

在重新運行構建時,您也可以選擇不包含clean階段,從而允許Maven的增量編譯器確定需要重建的內容。

19
votes
answers
21 views
+10

Spring boot application.properties maven multi-module projects

We are using spring boot in a multi-module project.

We have a Domain access module which has the common domain object classes, repositories, together with configuration for the datasource, JPA, Hibernate, etc. These are configured using a application.properties. We put all this configuration into the common module to save duplicating these common configurations in the higher level modules.

This all works fine when building the domain module, so the configurations are loaded correctly in the test units.

However the problems start when we try to use the domain module in the higher layer modules; they have their own application.properties which means Spring loads them and not the the Domain module application.properties, which this means the data source is not configured because only the higher module application.properties are loaded.

What we would like is both the domain module and higher level application properties to be loaded by Spring. But we can't see any easy way to do this.

I'm thinking this must be a common problem, and wonder if there any recommended solutions for this problem?

As we are using spring-boot the solution should ideally use annotations instead of applictionContext.xml.

沙发
+70

也許您應該只在頂級聚合器項目中使用 application.properties

您始終可以在子項目中使用 @PropertySource 來使用特定於其用例的名稱對其進行配置。

或者您可以使用不同的每個項目的名稱,並使用 spring.config.location (以逗號分隔)在頂層項目中將它們粘合在一起。

如果我們在頂級聚合器項目中有屬性文件,我們如何編寫子項目的測試?我們應該在子項目的測試資源中再次擁有這些屬性嗎? - 星展銀行於17年7月28日18:15

板凳
+60

我同意@Dave Syer。將應用程序拆分為多個模塊的想法是每個模塊都是一個獨立的單元,在本例中是一個jar文件。從理論上講,您可以將每個jar文件拆分為自己的源存儲庫,然後在多個項目中使用它們。假設您希望在Web和批處理應用程序中重用這些域類,如果所有APPLICATION級別配置都存儲在每個單獨的模塊中,則會嚴重降低其可重用性。

IMO只有聚合模塊應包含作為應用程序運行所需的所有配置,其他所有內容都只是一個可以根據需要重新混合和重用的依賴項。

我正在尋找一個很好的約定來設置子模塊中的默認屬性值。然後聚合器模塊只需要關注他們自己改變他們需要更改的子模塊屬性,而不是所有子模塊屬性。如果你考慮一下,這就是Spring Boot的工作原理; 它通常使用其JDBC,JPA,WEB項目的默認值,然後你只需要改變你感興趣的項目。 - user1232555 2014年7月25日9:35

那麼在這種情況下為什麼不使用彈簧啟動AutoConfiguration?如果你真的在設置屬性(數據源網址等),我認為這不一定與spring boot正在做的相同 - 他們選擇了適當的依賴關係和環境無關的設置,設置類似數據源的東西是特定定義應用程序 至少對我來說,每個jar應該只包含代碼,特定於應用程序的配置應該存在於聚合應用程序中。 - 本 - 2014年7月25日19:16

地板
+40

也許另一種方法可能是為每個模塊定義特定的配置文件,並使用application.properties文件來指定使用 spring.profiles.include property。

  domain-module  -  application.properties  -  application-domain.properties app-module  -  application.properties  -  application-app.properties   

並進入app-module的application.properties文件

  spring.profiles.include = domain,app  
     
			
        
4楼
+20

你可以做的另一件事(除了在Dave Syer提到的頂層使用application.properties之外)就是將域模塊的屬性文件命名為 domainConfig.properties

這樣就可以避免與 application.properties 的名稱衝突。

domainConfig.properties 將包含域所需的所有數據模塊能夠自己測試。可以使用多個 @PropertySource (一個用於 domainConfig.properties ,一個用於 application.properties 輕鬆完成與其餘代碼的集成。 )或配置 PropertySourcesPlaceholderConfigurer

這就是我所說的,但如果它讓任何人都更清楚,那一切都很好。我不建議使用另一個PropertySourcesPlaceholderConfigurer(它只是重複已經存在的那個的努力),如果你不能在運行時更改spring.config。*屬性,我想這是一個選項。 - Dave Syer 2014年4月18日2:15

好吧,我誤解了你的答案,我認為你的意思是完全拋棄域中的屬性文件,並使用頂層的唯一屬性文件。對於那個很抱歉! - geoand 14年4月18日6:41

7
votes
answers
18 views
+10

Maven packaging without test (skip tests)

I am new to Maven. I am trying to package my project. But, it automatically runs the tests. The tests insert some content in the database. This is not what I want, I need to avoid running tests while package the application. Anybody knows how run the package with out test?

沙发
+20

You can add either -DskipTests or -Dmaven.test.skip=true to any mvn command for skipping tests. In your case it would be like below:

mvn package -DskipTests

OR

mvn package -Dmaven.test.skip=true

暴力執照,但有效。我將它用於教育目的(不是在製作中)。它還擁有12c驅動程序 com.oracle ojdbc7 12.1.0.2 - Svetlin Nakov 2016年8月19日17:34

除許可問題外,您不應在pom中添加未知存儲庫。這會帶來安全風險,也可能威脅到您的構建。你能從耶穌基督後期聖徒教會的存放處獲得多少信任?它們提供了什麼保證,存儲庫是可靠,安全和可靠的,並且它們不會弄亂它?如果他們被黑客攻擊並發布惡意版本的ojdbc驅動程序或任何其他依賴項,會發生什麼? - Didier L 18年2月27日16:28

板凳
+20

In Inllij IDEA there is an option also to skip test goal.

enter image description here

地板
+10

You are, obviously, doing it the wrong way. Testing is an important part of pre-packaging. You shouldn't ignore or skip it, but rather do it the right way. Try changing the database to which it inserts the data(like test_db). It may take a while to set it up. And to make sure this database can be used forever, you should delete all the data by the end of tests. JUnit4 has annotations which make it easy for you. Use @Before, @After @Test annotations for the right methods. You need to spend sometime on it, but it will be worth it!

4楼
+10

In Intellij, go to View -> Tool Windows -> choose Maven Projects. On the Lifecyle dropdown, right-click on package -> choose Create 'your-project [package]'...

Enter this value: package -Dmaven.test.skip=true -f pom.xml in the Command line field. Click Apply and a Run Configurations dropdown menu should appear along with your created custom maven command.

在這種情況下,nexus如何提供幫助?它將從哪裡下載工件? - ziggy 12年12月12日16:15

答案是不完整的,但我認為@Michael Munsey說要創建一個內部/企業存儲庫來下載。 - 倫道夫於2012年5月10日22:19

是。設置Nexus,然後手動下載jar並將它們放入Nexus,以便連續的maven構建可以從Nexus實例中提取它。 - Michael Munsey 2013年8月19日23:24

@MichaelMunsey一般來說,建議像Artifactory或Nexus這樣的存儲庫管理器是一個很好的答案,但在Oracle JDBC數據庫驅動程序的特定情況下,它並不是一個好的,因為即使它使事情有效,它也不幸地暴露給你由於此許可條款違規而導致的問題。 - taringamberini於2014年5月19日7:14

5楼
+10

just mvn clean install -DskipTests

這是一個很好的答案 - 您只需將repo:mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2添加到您的pom.xml即可。 - Grouchal於2012年1月3日9:18

它可能有用,但它合法嗎?正如在此處的其他答案中所解釋的那樣,Oracle不允許除了它們之外的任何人分發驅動程序,並且它們不提供Maven存儲庫。如果您使用此解決方案,有時可能會在您最不期望的時候從存儲庫中刪除驅動程序。 - LS於12年10月10日15:50

@Grouchal這個答案使事情有效,但不幸的是,由於違反了許可條款,您將面臨麻煩。 - taringamberini於2014年5月19日7:08

@Grouchal ......沒有http://maven.ibiblio.org/maven/oracle也沒有http://maven.ibiblio.org/maven/com.oracle。 - 大衛於2017年3月21日12:44

6楼
0

mvn clean install -Dmaven.test.skip=true

worked for me since the -Dskip did not work anymore.

好消息,但安全設置太複雜了。像我們在1999年那樣在“lib”文件夾中下載JAR更容易。 - Svetlin Nakov 2016年8月19日17:36

有用!安全設置不是那麼複雜,並且有很好的文檔記錄,您只需要執行一次。當然,你必須在某處硬編碼你的(加密)密碼是一件痛苦的事情,我也質疑Oracle決定“保護”對他們的“公共”存儲庫的訪問,從開發人員的角度來看,它完全沒有意義。 - Pierluigi Vernetto 2017年10月28日11:52

7楼
0
mvn package -Dmaven.test.skip=true

...而manio也是公開的:blogs.oracle.com/WebLogicServer/entry/... - eckes 2015年4月20日21:15

8楼
0

The best and the easiest way to do it, in IntelliJ Idea in the window “Maven Project”, and just don’t click on the test button. I hope, I helped you. Have a good day :)

9楼
0

For maven package without infecting maven test:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

要小心,因為這個pom http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom沒有許可證定義,所以我不認為它是上傳的由工匠所有者。這個答案使事情有效,但不幸的是,由於違反了許可條款,您將面臨麻煩。 - taringamberini於2014年5月19日8:32

Downvoter,你對我或甲骨文生氣嗎?:)請解釋你的downvote,以便其他用戶知道這個答案有什麼問題。 - yǝsʞǝlA2015年4月21日7:50

596
votes
answers
26 views
+10

web.xml is missing and is set to true

Consider:

Enter image description here

When I create a simple Maven project in Eclipse I am getting this error:

web.xml is missing and <failOnMissingWebXml> is set to true

How can I fix this problem?

up vote 151 down vote accepted favorite
沙发
+1510
+50

您也可以這樣做:

  1. 右鍵單擊項目瀏覽器中的部署描述符
  2. 選擇生成部署描述符存根

    它將在 src / main / webapp中生成 WEB-INF 文件夾以及 web.xml

我不建議在代碼中添加樣板,因為你的構建工具會出錯。 - Martijn Burger 2015年11月12日20:34

@MartijnBurger你能否告訴我們上述黑客可能產生的影響,如果可能的話還可以添加其他一些替代方案? - 會幫助像我這樣的新手程序員。謝謝。 - Sendhilkumar Alalasundaram 2016年3月14日13:27

請參閱下面的答案以獲取替代方案。上面的解決方案沒有錯,只是你應該盡力使你的最終產品盡可能乾淨。使用上面的解決方案,您的最終產品將最終得到一個不必要的web.xml文件。您應該在構建工具(即maven)中修復此問題。 - Martijn Burger 2016年3月17日12:31

您也可以參考:eggsylife.co.uk/2009/12/20/ - Satyendra 2016年4月25日15:14

這將在您的項目中添加不必要的文件,其他的事情是web.xml approcah已經過時了。如果你想刪除這個錯誤然後只是強制更新maven錯誤將消失 - jitendra varshney 1月29日7:48

+3590

這是一個maven錯誤。它表示它期望項目中的web.xml文件,因為它是一個Web應用程序,如&lt; packaging&gt; war&lt; / packaging&gt; 所示。但是,對於最近的Web應用程序,web.xml文件是完全可選的。Maven需要趕上這個慣例。將此添加到您的maven pom.xml 以讓maven趕上來,您不需要在項目中添加無用的 web.xml

 <代碼>&LT;建立&GT; &LT;插件&GT; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家-戰爭插件&LT; / artifactId的&GT; &LT;版本&GT; 2.6&LT; /版本&GT; &LT;結構&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /結構&gt; &LT; /插件&GT; &LT; /插件&GT; &LT; /構建&GT;   

這是一個比添加空 web.xml 更好的解決方案,因為這樣您的最終產品保持乾淨,您只需更改構建參數。

對於更多當前版本的maven,您也可以使用較短版本:

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   假LT; / failOnMissingWebXml&GT; &LT; /結構&gt; &LT; /插件&GT; &LT; /插件&GT; &LT; /構建&GT;   

這是一個比添加空 web.xml 更好的解決方案,因為這樣您的最終產品保持乾淨,您只需更改構建參數。

對於更多當前版本的maven,您也可以使用較短版本:

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   假LT; / failOnMissingWebXml&GT; &LT; /結構&gt; &LT; /插件&GT; &LT; /插件&GT; &LT; /構建&GT;   

這是一個比添加空 web.xml 更好的解決方案,因為這樣您的最終產品保持乾淨,您只需更改構建參數。

對於更多當前版本的maven,您也可以使用較短版本:

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   

這是一個比添加空 web.xml 更好的解決方案,因為這樣您的最終產品保持乾淨,您只需更改構建參數。

更多當前版本maven你也可以使用較短的版本:

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   

這是一個比添加空 web.xml 更好的解決方案,因為這樣您的最終產品保持乾淨,您只需更改構建參數。

更多當前版本maven你也可以使用較短的版本:

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;   假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;  
     
			
        

這個答案比其他答案更合理。 - smwikipedia 2015年11月23日6:52

這個答案必須標記為正確 - alexanoid 2015年12月5日11:01

如果您在Servlet 3.0+環境中使用並且具有Interface WebApplicationInitializer的任何實現,則此答案是正確的方法。這是解決這個問題的明智方法 - 在沒有它的情況下採取措施後添加web.xml毫無意義! - Geeb 2016年1月29日13:27

我將標記為解決方案...... - Gabriel Simas於2016年2月13日3:17

如下所示,請考慮更新您的答案以獲得更短的配置。包括 false 足以代替更詳細的插件配置設置。 - Olivier Cailloux於2016年8月10日21:49

+260

如果您已經在/ src / main / webapp / WEB-INF下安裝了web.xml但仍然出現錯誤“web.xml缺失且設置為true”,則可以檢查是否包含 /項目源中的src / main / webapp

以下是您可以遵循的步驟:

  1. 您可以通過右鍵單擊項目來檢查此項,然後打開其“屬性”對話框,然後打開“部署程序集”,在此處可以添加Folder / src / main / webapp。保存設置,然後,
  2. 轉到Eclipse菜單項目 - &gt; 清理......並清理項目,錯誤應該消失。

    (我用Eclipse Mars證實了這一點)

在“Eclipse Mars”下體驗過相同的問題,您所描述的解決方案非常完美!謝謝 - Hartmut P. 2015年12月23日16:10

沒有為我工作...我已經有這些文件夾,我甚至嘗試設置web.xml缺少false。它沒有工作.... - Baradwaj Aryasomayajula 2016年3月18日在5:37

+160

我有同樣的問題。經過學習和谷歌搜索,我已經解決了我的問題:

右鍵單擊項目文件夾,轉到 Java EE Tools ,選擇 Generate Deployment Descriptor Stub 這將在 src / main / webapp / WEB-INF 文件夾中創建 web.xml

我不建議在代碼中添加樣板,因為你的構建工具會出錯。 - Martijn Burger 2015年11月12日20:35

這與接受的答案是一樣的建議。 - 肯斯特於17年1月1日16:14

+150

你也可以這樣做,不那麼冗長

 &lt; properties&gt; &LT; failOnMissingWebXml&GT假LT; / failOnMissingWebXml&GT; &LT; /性狀&gt;  
     
			
        

最優雅的解決方案恕我直言。請參閱doc(和一個舊的eclipse錯誤,它阻止了這個解決方案的工作,現在已經解決了)。 - Olivier Cailloux於2016年8月10日21:51

+150

如果您使用Spring Tool Suite,Generate Deployment Descriptor Stub的選項會在Java EE Tools下移動,因此您:

  1. 右鍵單擊 項目
  2. 選擇 Java EE工具
  3. 選擇生成部署描述符存根選項

    這將在src / main / webapp / WEB-INF /文件夾中創建web.xml文件,當然也可以從Maven的pom.xml文件中刪除錯誤。

    < / p>

+70

Eclipse識別出錯誤的默認 webapp 目錄。因此,我們應該通過 maven-war-plugin 清楚地設置它。

 &lt; build&gt; &LT;插件&GT; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家-戰爭插件&LT; / artifactId的&GT; &LT;版本&GT; 3.0.0&LT; /版本&GT; &LT;結構&gt; &LT; webappDirectory&GT; SRC /主/ web應用&LT; / webappDirectory&GT; &LT; /結構&gt; &LT; /插件&GT; &LT; /插件&GT; &LT; /構建&GT;   

保存此設置後,如果刪除它,錯誤將永遠不會出現。(我無法解釋原因。

+30

我遇到了同樣的問題,即使我的'src / main / webapp / WEB-INF /'文件夾中包含正確的 web.xml

Maven build重新創建(maven-&gt; eclipse)配置後問題消失了。我執行了 mvn eclipse:clean eclipse:eclipse <然後我用 Maven - &gt; 更新項目以添加(eclipse-&gt; maven)插件特定選項。

同樣在這裡,雖然我使用git reset --hard HEAD - Markus Barthlen 2016年9月9日13:52

謝謝,這對我也很有幫助。右鍵單擊 - > Maven - >更新項目 - trebor 16年11月9日23:38

你想要軟包裝還是硬包裝? - Ciro Santilli新疆改造中心996ICU六四事件2015年1月16日10:09

+20

我只在eclipse中遇到過這個問題,在Maven命令行中一切正常,我的web.xml文件已存在。這是一個受到影響的成熟項目(已在生產中部署)。我的問題與eclipse元數據有關。我的.settings /文件夾中的一個文件存在問題,特別是org.eclipse.wst.common.component已被更改。我能夠將此文件恢復到其先前版本,這解決了我的問題。

請注意,當我嘗試在eclipse屬性中單擊Deployment Assembly時,Yuci的答案對我不起作用,我收到一條錯誤消息,指出“當前顯示的頁麵包含無效值。”

我有相同的情況,不得不從我的.settings /文件夾恢復org.eclipse.wst.common.component文件,我的項目現在工作,顯然組件的內容被刪除,所以它沒有我的網絡的路徑。 xml文件。此外,當我試圖在eclipse屬性中打開Deployment Assembly時出現了同樣的錯誤:“當前顯示的頁麵包含無效值。” 我發現這個答案有點晚了,但這就是我解決它的方法。很棒的答案順便說一句。 - JorgeValdés於18年8月28日12:06

+10

執行此操作:

轉到並右鍵單擊Deployment Descriptor,然後單擊Generate Deployment Descriptor Stub。

+10

對於存在web.xml的項目項目 - &gt;屬性 - &gt;部署程序集,您可以在其中添加文件夾src / main / webapp。保存更改。清理項目以繼續。

對於沒有web.xml的項目在屬性標記下的pom.xml中將failOnMissingWebXml設置為false。

假設您當前的編輯器支持自動換行,它將自動換行。例如,pydev目前沒有(大約2014年1月)。 - ecoe 2014年1月14日0:04

Ctrl + Shift + F不會在火星上為我包裹長評論。 - PeterV.Mørch2015年9月23日21:06

對我不起作用。沒啥事兒。 - hepcat72 2015年10月23日20:58

它的工作令人驚訝! - 康斯坦丁於2016年5月15日16:58

呃..硬包裝。PS:關於“任何花哨的東西”,我從問題的“需要輸入文本段落”推斷出他不想在每一行的末尾按Enter鍵。所以我得出結論他正在尋找軟包裝。另外,他問是否有插件。 - ADTC於2016年5月26日10:28

0

只要沒有必要,創建一個只需要它的web.xml是沒有意義的。如果你有嵌入式servlet conatiner或沒有像spring-boot那樣的xml cfg,那就是這種情況。您只是在項目級別或全局的eclipse中禁用JavaEE(無用的東西)

  Eclipse / STS&gt; Windows&gt; Preferences&gt; JavaEE&gt; Doclet&gt; Webdoclet&gt; “取消選中”DeploymentDescriptor&gt; 好的 
     
			
        

完善。正是我在尋找什麼。 - Andreas_D 12年6月17日10:19

我已經安裝了你的Word Wrap插件,重新啟動了eclipse,但無法弄清楚Word Wrap的選項。我錯過了什麼嗎?我正在使用Eclipse Juno,並在Juno上安裝了PHP PDT。切換到兩個透視PHP / Jave EE,但即使在安裝Word Wrap插件後也似乎無法自動換行。你能幫我嗎?先感謝您。 - Sanjay Khadka 2013年4月22日2:06

可能它不適用於Juno版本。 - Sanjay Khadka 2013年4月22日2:10

安裝完成後,右鍵單擊編輯器中的任意位置並選擇“切換自動換行”,或按Ctrl-Alt-E。 - gbmhunter 13年12月10日2:46

0

選擇您的項目並選擇“Deployment Descriptor”選項,然後選擇“Generate Deployment Descriptor stub”

最後!+1。我已經在上面引用了你的答案。 - VonC於2016年2月22日9:43

我無法在Mac中啟用此功能。備用鍵盤快捷鍵(選項或命令)未激活它,它在“幫助”或任何其他菜單中不可用。 - Deborah 2016年12月8日0:11

在我的安裝中(Mac上為4.6.2),這是alt + cmd + Y - Christian 2017年3月14日16:55

如何激活此比較視圖? - dma_k 17年10月9日9:20

0

步驟:選擇您的項目並選擇“部署描述符”選項,然後選擇“生成部署描述符存根”工作正常。問題是我們並不總是需要web.xml,因此最好將false附加到pom.xml

-10

在src / webapp中創建WEB-INF文件夾,並在WEB-INF文件夾中包含web.xml頁面,然後

您使用哪個Android版本? - HefferWolf 2011年10月26日7:29

Min SDK版本7 - Android 2.1 - Mark Cameron 2011年10月26日7:31

我嘗試將目標更改為13,但它無法正常工作......可能是什麼原因? - Anirudh 12年11月11日3:53

@anirudhmaddy你使用“android:configChanges =”keyboard | keyboardHidden | orientation | screenLayout | uiMode | screenSize | smallestScreenSize“還是更短的?如果你將你的目標更改為13並使用更長的configChanges,它應該可以工作。 - GürcanKavakçıJan 13 '13 at 1:50

@ gurcan15是的,它現在正在工作。 - Anirudh 2013年1月15日4:24

-10

-web / .setting&amp; -admin / .setting

找不到了嗎?你用過哪個編輯器? - RainSia 2013年1月27日15:32

@africanherbsman也找不到“自動換行”選項。它是以特殊的視角還是以任何一種視角來指定的?我是C ++的人。 - 王2013年2月15日16:18

我在使用Default Eclipse Juno Java EE版本,但無法找到WOrd Wrap的選項。 - Sanjay Khadka 2013年4月22日2:09

-10

右鍵單擊該項目,轉到 Maven - &gt; 更新項目... ,然後檢查強制更新快照/版本,然後單擊確定它完成了!

258
votes
answers
36 views
+10

Building executable jar with maven?

I am trying to generate an executable jar for a small home project called "logmanager" using maven, just like this:

How can I create an executable JAR with dependencies using Maven?

I added the snippet shown there to the pom.xml, and ran mvn assembly:assembly. It generates two jar files in logmanager/target: logmanager-0.1.0.jar, and logmanager-0.1.0-jar-with-dependencies.jar. I get an error when I double-click on the first jar:

Could not find the main class: com.gorkwobble.logmanager.LogManager. Program will exit.

A slightly different error when I double-click the jar-with-dependencies.jar:

Failed to load Main-Class manifest attribute from: C:EclipseProjectslogmanager	argetlogmanager-0.1.0-jar-with-dependencies.jar

I copied and pasted the path and classname, and checked the spelling in the POM. My main class launches fine from an eclipse launch configuration. Can someone help me figure out why my jar file won't run? Also, why are there two jars to begin with? Let me know if you need more information.

Here is the full pom.xml, for reference:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gorkwobble</groupId>
  <artifactId>logmanager</artifactId>
  <name>LogManager</name>
  <version>0.1.0</version>
  <description>Systematically renames specified log files on a scheduled basis. Designed to help manage MUSHClient logging and prevent long, continuous log files.</description>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.2</version>
            <!-- nothing here -->
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <mainClass>com.gorkwobble.logmanager.LogManager</mainClass>
                </manifest>
              </archive>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- commons-lang -->
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.4</version>
    </dependency> 

    <!-- Quartz scheduler -->
    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>quartz</artifactId>
        <version>1.6.3</version>
    </dependency>
    <!-- Quartz 1.6.0 depends on commons collections -->
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.1</version>
    </dependency>
    <!-- Quartz 1.6.0 depends on commons logging -->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1</version>
    </dependency>
    <!-- Quartz 1.6.0 requires JTA in non J2EE environments -->
    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>jta</artifactId>
      <version>1.1</version>
      <scope>runtime</scope>
    </dependency>

    <!-- junitx test assertions -->
    <dependency>
        <groupId>junit-addons</groupId>
        <artifactId>junit-addons</artifactId>
        <version>1.4</version>
        <scope>test</scope>
    </dependency>

    <!-- junit dependency; FIXME: make this a separate POM -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.1</version>
    </dependency>

  </dependencies>
  <dependencyManagement>
  </dependencyManagement>
</project>
up vote 239 down vote accepted favorite
沙发
+2390
+50
package 階段由 jar:jar (因為模塊的包裝類型為 jar )。第二個是由 assembly:assembly 生成的程序集,應該包含當前模塊及其依賴項中的類(如果使用了描述符 jar-with-dependencies )。

當我雙擊第一個jar時出現錯誤:

 找不到主類:com.gorkwobble.logmanager.LogManager。程序將會退出。   

如果您應用了作為參考發布的鏈接的建議配置,您配置了jar插件以生成可執行工件,如下所示:

 &lt; 插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家-JAR-插件&LT; / artifactId的&GT; &LT;結構&gt; &LT;檔案&GT; &LT;清單&GT; &LT; addClasspath&GT;真&LT; / addClasspath&GT; &LT; mainClass&GT; com.gorkwobble.logmanager.LogManager&LT; / mainClass&GT; &LT; /清單&GT; &LT; /存檔&GT; &LT; /結構&gt; &LT; /插件&GT;   

所以 logmanager-0.1.0.jar 確實是可執行的但是1.這不是你想要的(因為它沒有所有的依賴關係)和2它不包含 com.gorkwobble.logmanager.LogManager (這就是錯誤所說的,檢查jar的內容)。

當我雙擊jar-with-dependencies.jar時出現略有不同的錯誤: < pre> 無法從以下位置加載Main-Class清單屬性:C:EclipseProjectslogmanager argetlogmanager-0.1.0-jar-with-dependencies.jar

再次,如果你按照建議配置了程序集插件,你有這樣的東西:

 &lt; plugin&gt; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家組裝-插件&LT; / artifactId的&GT; &LT;結構&gt; &LT; descriptorRefs&GT; &LT; descriptorRef&GT;罐子與 - 依賴性&LT; / descriptorRef&GT; &LT; / descriptorRefs&GT; &LT; /結構&gt; &LT; /插件&GT;   

通過此設置, logmanager-0.1.0-jar-with-dependencies.jar 包含當前模塊中的類它的依賴關係但是,根據錯誤,它的 META-INF / MANIFEST.MF 包含 Main-Class 條目(可能與logmanager-0.1.0.jar中的MANIFEST.MF不同。jar實際上是可執行文件,這也不是你想要的。


所以,我的建議是刪除配置 來自maven-jar-plugin的元素,並像這樣配置maven-assembly-plugin:

 &lt; plugin&gt; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家-JAR-插件&LT; / artifactId的&GT; &LT;版本&GT; 2.2&LT; /版本&GT; &lt;! - 這裡沒什麼 - &gt; &LT; /插件&GT; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家組裝-插件&LT; / artifactId的&GT; &LT;版本&GT; 2.2-β-4; /版本&GT; &LT;結構&gt; &LT; descriptorRefs&GT; &LT; descriptorRef&GT;罐子與 - 依賴性&LT; / descriptorRef&GT; &LT; / descriptorRefs&GT; &LT;檔案&GT; &LT;清單&GT; &LT; mainClass&GT; org.sample.App&LT; / mainClass&GT; &LT; /清單&GT; &LT; /存檔&GT; &LT; /結構&gt; &LT;處決&GT; &LT;執行&GT; &LT;階段&gt;&包LT; /階段&gt; &LT;目標&GT; &LT;目標&GT;單&LT; /目標&GT; &LT; /目標&GT; &LT; /執行&GT; &LT; /處決&GT; &LT; /插件&GT;   

當然,將 org.sample.App 替換為您要執行的類。小小的獎勵,我已將彙編:單綁定到 package 階段,因此您無需運行< 代碼>彙編:彙編了。只需運行 mvn install ,程序集將在標準構建期間生成。

因此,請使用上面給出的配置更新您的pom.xml並運行 mvn clean install 然後,cd進入 target 目錄並再試一次:

  java -jar logmanager-0.1.0-jar-with-dependencies.jar   

如果您收到錯誤,請用它更新您的問題並發布 META-INF / MANIFEST.MF 文件的內容以及 pom.xml的相關部分(插件配置部分)。另請發布結果:

  java -cp logmanager-0.1.0-jar-with-dependencies.jar com.gorkwobble。logmanager.LogManager   

以證明它在命令行上正常工作(無論eclipse在說什麼)。

編輯:對於Java 6,您需要配置Maven的編譯器插件。將其添加到您的pom.xml:

 &lt; plugin&gt; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT;   在命令行上運行正常(無論eclipse在說什麼)。 

編輯:對於Java 6,您需要配置maven-compiler-plugin。將其添加到您的pom.xml:

 &lt; plugin&gt; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT;   在命令行上運行正常(無論eclipse在說什麼)。 

編輯:對於Java 6,您需要配置maven-compiler-plugin。將其添加到您的pom.xml:

 &lt; plugin&gt; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT;   maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT;   maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT;  
     
			
        

感謝您的意見!我按照你的指定更改了我的pom.xml。當我運行mvn clean install時,我從代碼中得到了一堆編譯錯誤,說-source 1.3中不支持註釋等。我正在使用jdk1.6並且它在eclipse中編譯; 我不確定1.3是如何引入的。也許pom片段中的一個庫版本是舊的? - RMorrisey 09年11月29日7:46

謝謝!我超越了1.3問題。我還必須將junit4依賴項添加到我的POM中。我正在努力解決其他問題; 如果我卡住了,我會再次發帖!如果我讓jar運行,我會將其標記為答案。我目前的POM在上面的問題中更新了。 - RMorrisey 09年11月29日21:12

有沒有辦法從生成的jar文件中排除資源? - Hai Minh Nguyen 2010年11月3日17:24

是否有可能讓生成的jar具有“正常”名稱? - Daniil Shevelev 2014年2月11日16:10

我還發現這個Sonatype博客文章有用 - user2964500 2015年4月13日9:24

+140

Pascal Thivent 的答案也幫助了我。如果您在&lt; pluginManagement&gt; 元素中管理插件,則必須在插件管理之外再次定義程序集,否則依賴項不會打包在jar如果你運行 mvn install

 &lt; project xmlns =“http://maven.apache.org/POM/4.0.0”xmlns:xsi = “http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation =“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven -4.0.0.xsd“&GT; &LT; modelVersion&GT; 4.0.0&LT; / modelVersion&GT; &LT;版本&GT; 1.0.0-快照LT; /版本&GT; &LT;包裝和GT;罐子&LT; /包裝&GT; &LT;建立&GT; &LT; pluginManagement&GT; &LT;插件&GT; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家編譯-插件&LT; / artifactId的&GT; &LT;版本&GT; 3.1&LT; /版本&GT; &LT;結構&gt; &lt;信源&GT; 1.6&LT; /源&GT; &lt;目標&GT; 1.6&LT; /靶&GT; &LT; /結構&gt; &LT; /插件&GT; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家組裝-插件&LT; / artifactId的&GT; &LT;版本&GT; 2.4&LT; /版本&GT; &LT;結構&gt; &LT;檔案&GT; &LT;清單&GT; &LT; mainClass&GT; main.App&LT; / mainClass&GT; &LT; /清單&GT; &LT; /存檔&GT; &LT; descriptorRefs&GT; &LT; descriptorRef&GT;罐子與 - 依賴性&LT; / descriptorRef&GT; &LT; / descriptorRefs&GT; &LT; /結構&gt; &LT;處決&GT; LT;執行&GT; &LT; ID&GT;使組裝&LT; / ID&GT; &LT;階段&gt;&包LT; /階段&gt; &LT;目標&GT; &LT;目標&GT;單&LT; /目標&GT; &LT; /目標&GT; &LT; /執行&GT; &LT; /處決&GT; &LT; /插件&GT; &LT; /插件&GT; &LT; / pluginManagement&GT; &LT;插件&GT; &lt;! - 沒有這個沒有工作 - &gt; &LT;插件&GT; &LT;&的groupId GT; org.apache.maven.plugins&LT; /&的groupId GT; &LT; artifactId的&GT;行家組裝-插件&LT; / artifactId的&GT; &LT; /插件&GT; &LT; /插件&GT; &LT; /構建&GT; &LT;依賴性&GT; &lt;! -  dependencies註釋掉以縮短示例 - &gt; &LT; /依賴性&GT; &LT; /項目&GT;  
     
			
        

謝謝Mike,它幫助了我。最初我的包是在不使用的情況下生成的。但Eclipse在pom.xml中給出了一些錯誤“maven - 生命週期未涵蓋的插件執行”。這讓我分心。所以為了解決這個問題,我添加了,現在eclipse錯誤消失了但是我的包已經停止構建了。你上面的pom片段對我有用。:) - shashaDenovo 2015年7月1日18:33

這很有用..在使用時,最常見的答案是行不通的。 - ininprsr 2015年7月20日12:09

+50

如果你不想在包上執行彙編目標,你可以使用下一個命令:

  mvn package assembly:single   

這裡 package 是關鍵字。

0

右鍵單擊該項目並提供maven build,maven clean,maven generate resource和maven install.jar文件將自動生成。

737
votes
answers
19 views
+10

How to fix error “Updating Maven Project”. Unsupported IClasspathEntry kind=4?

I have imported maven project in STS, when I run update update project I receive:

"Updating Maven Project". Unsupported IClasspathEntry kind=4

Is there a workaround for this?

up vote 611 down vote accepted favorite
沙发
+6110
+50

This issue has been fixed in m2e 1.5.0 which is available for Eclipse Kepler (4.3) and Luna (4.4)

Please see https://bugs.eclipse.org/bugs/show_bug.cgi?id=374332#c14

The problem is caused by the fact that STS (the Spring IDE/Eclipse), as well Eclipse and other Eclipse based IDE's, use the m2e(clipse) plugin but that eclipse:eclipse has been probably been run on the project. When m2e encounters a "var" .classpath entry, it throws this error.

The update sites are specified at the following url:
http://eclipse.org/m2e/m2e-downloads.html

If you can't use m2e 1.5.0 for any reason, then :

  1. Disable the maven nature for the project (via the right-click menu)

  2. Run mvn eclipse:clean (while your project is open in STS/eclipse). Depending on the timing, you might need to do a refresh or two on the project before re-enabling the maven nature. You should be able to see that your project has lost it's Maven nature. (The eclipse:clean goal just deletes the .project, .classpath and .settings/ files/directories. You can also just remove those files (again while the project is open) instead of running mvn eclipse:clean.)

  3. Re-enable the maven nature.
    (Most of the time, this can be done by right-clicking on the project in question in the package explorer pane, and then choosing 'Configure'-> 'Convert to Maven Project')

我必須嘗試兩次才能讓它發揮作用。我第一次嘗試“var”時會回到.classpath文件中。我用mvn eclipse:eclipse重新生成文件並再次嘗試。它第二次工作。 - 迪帕克巴拉2012年8月1日18:19

將kind屬性設置為var的所有classpathentry手動從.classpath文件中刪除可能會有所幫助。 - Puigcerber於2012年8月21日9:29

它對我有用,但在重新啟用Maven性質之前我必須做一個額外的“刷新”(實際上在我的情況下“配置為Maven項目”因為它是一個多面的項目) - Stuart Watt 12年8月28日在19: 14

repository.sonatype.org/content/repositories/forge-sites/m2e不再起作用 - Shervin Asgari 2012年8月31日9:03

我認為你的Eclipse版本錯了:Eclipse Kepler是4.3而Luna是4.4 - vogella 2014年7月9日4:48

+610
  1. Right-click on your project, select Maven -> Remove Maven Nature.

  2. Open you terminal, go to your project folder and do mvn eclipse:clean

  3. Right click on your Project and select “Configure -> Convert into Maven Project”

Now you got “Unsupported IClasspathEntry kind=4 Eclipse Scala” disappear.

謝謝你。只是給別人一個注意事項,它是mvn eclipse:乾淨,而不是mvn clean(我被沒有密切關注所迷惑)。 - Jin Kim於12年5月5日16:30

不適用於Eclipse Kepler m2e 1.4 - Zbyszek 2013年8月17日17:16

好。在將項目導入Kepler之後,我從cmd行創建了src / java。情況就是這樣。 - Zbyszek 2013年8月17日17:28

+420

Sometimes, even re-importing the Maven project will not work. Updating the project correctly in eclipse is not a deterministic process. The only 100% fail safe procedure I've found is:

  1. Disable Maven Nature, run mvn eclipse:clean, restart, cross your fingers and Pray 3 times.
  2. If this won't work, delete the project, run mvn eclipse:clean, re-import refresh, pray and use the force.
  3. If this still doesn't work, restart Eclipse, or even better your computer. While waiting for the reboot, you can make a random donation to fix your Karma. Repeat step 2 and don't forget to pray and control your anger. Anger leads to hate. Hate leads to suffering.
  4. Try all the other answers posted in this thread. You might need to try them all for 3 times at least before giving up.
  5. Format your Computer, re-install Eclipse and Maven. No need to pray anymore, all gods hate you anyway
  6. Delete your git project, burn the physical drive that stored the remote repository, and write your project from scratch.
  7. Find a time machine, travel to the past and convince yourself to follow another, non-programming career or at least to avoid Java

嘗試了所有,繼續說“Maven依賴管理問題”或“NullPointerException” - srirachapills 14年4月22日在19:37

保持冷靜並重新開始撤消重複 - yannicuLar 2014年6月17日10:30

Java曾對你做過什麼? - 邪惡的洗衣機於2016年8月10日0:35

@EvilWashingMachine真的沒什麼不好的...只是試圖找藉口來證明使用時間機器 - yannicuLar 2016年8月10日11:40

保持冷靜並使用vim +終端 - Pratik Singhal 2017年5月15日6:31

+120
  1. Make sure that the version of the m2e(clipse) plugin that you're running is at least 1.1.0

  2. Close maven project - right click "Close Project"

  3. Manualy remove all classpathentry with kind="var" in .classpath file
  4. Open project

or

  1. Remove maven project
  2. Manualy rmeove .classpath 4 Reimport project

錯誤與@Marco所述的STS無關。這是一個普遍的問題。禁用Maven性質,刪除.classpath文件,重新啟用Maven性質。 - sbzoom 2012年8月22日15:01

+60

Have you tried:

  1. If you have import project into the eclipse 4, please delete it.
  2. In maven consol, run: mvn eclipse:clean
  3. In Eclipse 4: File -> Import -> Maven -> Existing Maven Projects

在執行此操作之前,請確保之前未在該項目上運行maven eclipse插件。mvn eclipse:如果需要,清潔將修復它。 - 12月11日15:13 AChoice

這在Juno中對我來說效果更好。我在Eclipse中刪除了項目,然後重新導入。 - cs94njw 2013年2月21日18:00

在Eclipse開普勒沒有影響 - Zbyszek 2013年8月17日17:17

+30

Seeing all other answers. I found for me a simpler way.

I just removed all lines in the .classpath (editing with eclipse) containing a var and used maven -> update project without an error.

這對我有用,也需要刪除包含maven jar的“jar”行。 - dwjohnston 2015年4月14日2:31

+20

This error is also thrown if the update command is used on a project instrumented for code coverage with Clover.

To resolve in this scenario: Un-instrument the project folders you wish to update. Run the maven update then instrument for code coverage again.

0

I tried Marco's steps but no luck. Instead if you just get the latest m2e plugin from the link he provides and one by one right click on each project -> Maven -> Update Dependencies the error still pops up but the issue is resolved. That is to say the warnings disappear in the Markers view. I encountered this issue after importing some projects into SpringSource Tool Suite (STS). When I returned to my Eclipse Juno installation the warnings were displaying. Seeing that I had m2e 1.1 already installed I tried Marco's steps to no avail. Getting the latest version fixed it however.

謝謝,編輯我的答案,強調你應該得到最新版本,而不僅僅是最新版本的1.1.0。 - 馬克2012年8月2日23:52

如果您使用Eclipse MarketPlace而不是通過外部站點下載,您將始終獲得最新版本。 - Jops 2013年3月30日12:10

0

I couldn't get mvn eclipse:clean etc to work with Kepler.

However I changed creating and extending variables to just using external jars in my eclipse classpath. This was reflected in no var's in my .classpath.

This corrected the problem. I was able to do a Maven update.

0

This issue (https://bugs.eclipse.org/394042) is fixed in m2e 1.5.0 which is available for Eclipse Kepler and Luna from this p2 repo :

http://download.eclipse.org/technology/m2e/releases/1.5

If you also use m2e-wtp, you'll need to install m2e-wtp 1.1.0 as well :

http://download.eclipse.org/m2e-wtp/releases/luna/1.1

firts鏈接產生“我們很抱歉,無法找到頁面或文件。以下是一些原因......” - JaroslavZáruba2014年6月28日14:16

原因#1適用於此:這是一個Eclipse Update站點/ p2存儲庫; 你必須從Eclipse訪問它(參見help.eclipse.org/luna/index.jsp?topic=//...)。 - Fred Bricon 2014年6月30日12:49

這對我有用。謝謝:) - Niroshan 3月15日2:45

0

Upgrading from Kepler to Luna worked for me.

I had just added some components for Java 1.8 support. It seems that they where not as compatible as I would like or that I mixed the wrong ones. It really caused a lot of problems. Trying to update the system reported errors as they couldn't fulfill some dependencies. Maven upgrades didn't work. Tried a lot of things.

So, if there is no reason to avoid the upgrade just add the luna repository to avalilable software sites (Luna http://download.eclipse.org/releases/luna/ ) and "check for updates". It is better to have all the components with the same version and there are some nice new features.

0

I tried all the steps mentioned here and on similar questions but couldn't solve this problem. I could neither solve problem nor update my m2eclipse. So I installed Eclipse Luna and it solved my problem... though it mean that I had to spend about 45 min to configure all the environment in my workspace.

0

Try mvn clean install eclipse:eclipse -Dwtpversion=2.0 command on DOS command prompt. Suggesting you because , It worked for me!!

0

I'm using Eclipse 4.3.2 (Kepler) with M2E 1.4.x and felt over this problem several times!

In my case the "mvn eclipse:eclipse" command also generates Checkstyle, PMD and Findbugs configuration so "mvn eclipse:clean" does not help me because it drops all those config files again.

The best solution for me was to delete all ".classpath" files:

find . -name ".classpath" -delete

and import the project into eclipse afterwards.

為什麼我們需要第二個依賴?請刪除第二個!(JSP-API)。 - Rudy Vissers 2015年6月12日8:13

沒有第一個就足夠了。 - Zeeshan Akhter 2015年6月18日9:58

0

Before importing the project, it should be converted into eclipse project mvn eclipse: eclipse Then i found the following error. An internal error occurred during: "Importing Maven projects".Unsupported IClasspathEntry kind=4

Where is the value kind = "var" that M2E does not recognize and therefore throws the error.

Now type this. mvn eclipse: clean

Now refresh the project in eclipse or re-import.

0
votes
answers
17 views
+10

ComponentScan和import org.springframework.context.annotation.ComponentScan無法解析爲類型

0

我的項目在Spring中遇到問題。首先,我無法在服務器上運行它,但是在再次下載所有資源後,它就開始了。ComponentScan和import org.springframework.context.annotation.ComponentScan無法解析爲類型

但現在我有一些進口彈簧在可看不到 例如:

import org.springframework.context.annotation.ComponentScan can not be resolved as a type. 

,並正因爲如此休眠的autwired值

@ComponentScan can not be resolved as a type. 

也沒有創造我的數據庫表(我想所以)

另外兩個配置類有一些錯誤:

類型Spring4Initializer的層次結構是不一致的 SpringSecurityInitializer

public class Spring4Initializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[] { Spring4Configuration.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Filter[] getServletFilters() { 
     CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
     characterEncodingFilter.setEncoding("UTF-8"); 
     characterEncodingFilter.setForceEncoding(true); 
     return new Filter[] { characterEncodingFilter }; 
    } 
} 

SpringSecurityInitializer在該行 多個標記 - 類型org.springframework.web.WebApplicationInitializer不能得到解決。它是間接地從 所需的.class文件

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

} 

引用我已經試過的Maven乾淨Maven構建

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for pl.dmcs:eschool:war:1.0.0-BUILD-SNAPSHOT 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework:spring-context:jar -> version ${org.springframework-version} vs 4.3.7.RELEASE @ line 74, column 17 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.fasterxml.jackson.core:jackson-databind:jar -> version 2.8.8 vs 2.8.3 @ line 157, column 15 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: javax.servlet:servlet-api:jar -> version ${servlet-api-version} vs 2.5 @ line 254, column 15 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework:spring-context:jar -> version ${org.springframework-version} vs 3.0.5.RELEASE @ line 271, column 14 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building E-School 1.0.0-BUILD-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ eschool --- 
[INFO] Deleting C:UsersPiotrDesktopE-School	arget 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

有誰知道我應該怎麼做它,使休眠工作? 在大綱樹中我的函數GetHibernateProperites()被標記爲紅色

沙发
0
0

您是否在您的maven依賴中包含了spring-context?我認爲你錯過了依賴。

+0

我做到了。但仍然不起作用。 –

+0

我可以看到你的pom文件嗎?你正在使用mvn clean install命令嗎? –

+0

http://www.wklejto.pl/310782 –

0
votes
answers
20 views
+10

When maven says “resolution will not be reattempted until the update interval of MyRepo has elapsed”, where is that interval specified?

With maven, I occasionally hit an artifact that comes from some 3rd-party repo that I haven't built or included in my repository yet.

I'll get an error message from the maven client saying that an artifact can't be found:

Failure to find org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0 in http://myrepo:80/artifactory/repo was cached in the local repository, resolution will not be reattempted until the update interval of MyRepo has elapsed or updates are forced -> [Help 1]

Now, I understand what this means, and can simply re-run my command with -U, and things usually work fine from there on out.

However, I find this error message to be extremely unintuitive and am trying to spare my co-workers some headaches.

I am trying to figure out if there is some place that I can modify this update interval setting.

  1. Is the update interval that is mentioned in this error message a client-side or server-side setting?
  2. If client-side, how do I configure it?
  3. If server-side, does anyone know how/if Nexus/Artifactory expose these settings?
0
votes
answers
35 views
+10

Maven 3 warnings about build.plugins.plugin.version

Since I updated to Maven 3 I get the following warning messages at each build :

How can I get rid of these warnings?

[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for proj:id:jar:3.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 195, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 204, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 227, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 215, column 15
[WARNING] 'reporting.plugins.plugin.version' for org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 271, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
0
votes
answers
57 views
+10

persistence.xml文件是不是在classpath

-1

所以我試圖建立使用Wildfly,JPA,Hibernate和MariaDB的使用Maven在Eclipse的adminsystem。我在WildFly管理控制檯中配置了我的數據源,一切正常。 Succesful connection picture in WildFly 現在我試圖寫入該項目與實體管理器工廠的數據庫在Eclipse。但我有此錯誤消息: Error message in Eclipse 在這裏你可以看到我的項目樹: Project treepersistence.xml文件是不是在classpath

這裏是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.gyurmatag.adminsystem</groupId> 
<artifactId>adminsystem</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 

    <servlet.version>3.1.0</servlet.version> 
    <jsf.version>2.2.12</jsf.version> 
    <primefaces.version>5.3</primefaces.version> 

    <version.wildfly>9.0.2.Final</version.wildfly> 
    <jboss.home>${project.build.directory}/wildfly-${version.wildfly} 
    </jboss.home> 
    <server.config>standalone.xml</server.config> 

    <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version> 
    <maven-dependency-plugin>2.10</maven-dependency-plugin> 
    <maven-resources-plugin.version>2.7</maven-resources-plugin.version> 
    <wildfly-maven-plugin.version>1.1.0.Alpha5</wildfly-maven-plugin.version> 
</properties> 

<dependencies> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>${servlet.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- JSF --> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <!-- PrimeFaces --> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  

    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java- 
client --> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>2.2.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate- 
entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

</dependencies> 

<build> 
<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
     <!-- Unpack the distribution --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>unpack-wildfly</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.wildfly</groupId> 
           <artifactId>wildfly-dist</artifactId> 
           <version>${version.wildfly}</version> 
           <type>zip</type> 
           <overWrite>false</overWrite> 
           <outputDirectory>${project.build.directory} 
</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Copy server configuration --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>copy-standalone-xml</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 

<outputDirectory>${jboss.home}/standalone/configuration</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Maven WildFly plugin --> 
     <plugin> 
      <groupId>org.wildfly.plugins</groupId> 
      <artifactId>wildfly-maven-plugin</artifactId> 
      <version>${wildfly-maven-plugin.version}</version> 
      <configuration> 
       <jbossHome>${jboss.home}</jbossHome> 
       <serverConfig>${server.config}</serverConfig> 
      </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
</build> 

這裏是我的持久性。 XML:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 

      <persistence-unit name="adminsystem" transaction-type="JTA"> 
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

       <jta-data-source>jboss/MariaDBDS</jta-data-source> 


       <properties> 
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
        <property name="hibernate.hbm2ddl.auto" value="validate" /> 
        <property name="hibernate.show_sql" value="true" /> 
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.connection.release_mode" value="auto" /> 
       </properties> 
      </persistence-unit> 

這裏是我JPAUtility類:

package com.gyurmatag.adminsystem.model; 


import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 


public class JPAUtility { 
private static final EntityManagerFactory emFactory; 
static { 
     emFactory = Persistence.createEntityManagerFactory("adminsystem"); 
} 
public static EntityManager getEntityManager(){ 
    return emFactory.createEntityManager(); 
} 
public static void close(){ 
    emFactory.close(); 
} 
} 

如果你想採取一個更仔細看看我的項目,你可以在這裏找到:Bitbucket repo

你能幫助我有了這個?

非常感謝! :)

+5

'persistence.xml'就是它應該被稱爲... – DN1

+0

這似乎是一個在問題中錯字... –

+0

是的。這是一個錯字。感謝您的答案! –

沙发
0
0

我懷疑你有太常見了「太多的依賴錯誤」。

更換所有你的依賴與:

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  
</dependencies> 

,看你怎麼去...

+0

我的代碼中存在拼寫錯誤。無論如何感謝您的答案! –

+0

您應該解決您的依賴反正 –

+1

它工作正常... –