2013-07-17 137 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很高兴听到这个好消息 –