2013-07-17 134 views
1

我試着從一本書下載春/ Java代碼來運行他們的代碼和測試,但不幸的是我得到的錯誤支持,Maven的依賴插件不是行家

我看到這是一個常見的錯誤,但不看到一個修復我的POM文件,

的pom.xml

<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> 
    <parent> 
     <groupId>com.apress.springrecipes</groupId> 
     <artifactId>core</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <artifactId>springintro</artifactId> 
    <name>Introduction to Spring</name> 
    <dependencies> 

     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.javaee</groupId> 
      <artifactId>jboss-jca-api</artifactId> 
     </dependency> 

    </dependencies> 


</project> 

錯誤

Jul 17, 2013 3:51:20 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]be41ec: startup date [Wed Jul 17 15:51:20 EDT 2013]; root of context hierarchy 
Jul 17, 2013 3:51:20 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [beans.xml] 
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:126) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:92) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.apress.springrecipes.hello.Main.main(Main.java:10) 
Caused by: java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:141) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) 
    ... 13 more 

Pom文件錯誤:

maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. 
maven-resources-plugin prior to 2.4 is not supported by m2e. Use maven-resources-plugin version 2.4 or later. 
+0

你的應用程序中的任何地方是否有bean.xml? –

+0

是的,我在項目 – user1050619

回答

2

m2e不是Maven。 POM文件錯誤是說Eclipse的Maven插件(m2e)不知道如何處理「複製依賴」:「解壓」目標。 m2e的工作方式必須瞭解目標在pom文件中的作用,以便它可以在Eclipse構建中複製該行爲。

有你可以做兩兩件事:

  1. 告訴Eclipse忽略的目標 - 這將讓你沒有得到錯誤。在Eclipse增量構建過程中,這個解包步驟永遠不會發生,當您執行完整的Maven構建時,它仍然會發生。
  2. 安裝一個「連接器」,它告訴Eclipse當它遇到該目標時該怎麼做。這個目標的連接器可以找到here

至於maven資源插件,我沒有看到任何其他選項,而不是升級POM中指定的插件版本。這裏的錯誤是說Eclipse的Maven插件不能用於舊版的Maven插件。

我不知道是什麼導致文件未找到錯誤,但懷疑這是因爲該文件包含在Eclipse不解包的任何內容中。

+0

下安裝了我剛剛安裝的Maven Integration for Eclipse,但仍然收到舊版本的錯誤 – user1050619

+1

錯誤不是m2e(Maven集成for Eclipse)對於Maven來說太舊了,而是你的插件在pom.xml文件對於m2e來說太舊了。我猜你正在閱讀的這本書既沒有使用Eclipse,也沒有使用過舊版本的Eclipse。您需要修改它們提供的文件,首先更新應該在pom.xml文件中列出的maven-resources-plugin的版本。 – Pace

+0

我可以在將beans.xml移動到正確的文件夾後修復它。看起來像它無法加載bean文件...但仍然看到pom.xml文件中的錯誤...我怎麼知道maven-resource-plugin的版本......我應該去更新xml文件的標記......感謝您的時間 – user1050619

3

@Pace說的是完全有效的,我相信OP應該試着瞭解m2e在做什麼。 個人而言,我討厭0.10之後的m2e行爲,爲此他們引入了連接器概念。這個概念很好,但告訴Eclipse如何對不支持的插件做出反應的方式是嚴重污染了對我來說很糟糕的POM。切換回較舊的M2E版本可能會讓您的生活更輕鬆,但您失去了某些功能。

再回到你的問題,從你報的錯誤消息:

maven-resources-plugin prior to 2.4 is not supported by m2e. Use maven-resources-plugin version 2.4 or later.

似乎暗示,我認爲M2E做支持Maven的資源 - 插件> = 2.4(我不知道,我的天堂沒有遇到過類似的問題)。嘗試在您的POM中使用maven-resources-plugin的新版本(2.4或更高版本,最新版本爲2.6),M2E可以爲您提供設置。

<project> 
... 
    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.6</version> 
     </plugin> 
     </plugins> 
     .... 
    </pluginManagement> 
     .... 
    </build> 
</project> 

它始終是杜絕你使用插件的版本一個很好的做法。這導致更「可重複」的構建。

+0

後來的日食將插件信息存儲在POM之外的.settings之下,所以它們至少修正了這個可怕的暗示。 –

+0

酷!我一直在監視這個進展,但一年前放棄了:P很高興聽到這個好消息 –