maven不支持Maven依赖插件

时间:2013-07-17 20:31:23

标签: java spring maven

我试图从书中下载Spring / Java代码来运行他们的代码并测试它但不幸的是我收到了错误,

我发现这是一个常见的错误,但没有看到我的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.springframework.context.support.ClassPathXmlApplicationContext@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.

2 个答案:

答案 0 :(得分:3)

@Pace所说的是完全有效的,我相信OP应该试着了解m2e在做什么。 我个人讨厌在0.10之后m2e的行为,为此他们引入了连接器概念。这个概念很好,但告诉Eclipse如何对不支持的插件做出反应的方法是严重污染POM,这看起来很糟糕。尽管您丢失了某些功能,但切换回较旧的M2E版本可能会让您的生活更轻松。

从您引用的错误消息中回到您的问题:

  m2e不支持2.4之前的maven-resources-plugin。使用maven-resources-plugin版本2.4或更高版本。

似乎我觉得m2e确实支持maven-resources-plugin&gt; = 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>
标记您使用的插件版本总是一个好习惯。这导致了更“可重复”的构建。

答案 1 :(得分:2)

m2e不是Maven。 POM文件错误说Eclipse的Maven插件(m2e)不知道如何处理“copy-dependencies”:“unpack”目标。 m2e的工作方式是它必须了解目标在pom文件中的作用,以便它可以在Eclipse构建中复制该行为。

您可以做两件事:

  1. 告诉Eclipse忽略目标 - 这将使您不会收到错误。在Eclipse增量构建期间,这个解包步骤永远不会发生,当你进行完整的Maven构建时,它仍然会发生。
  2. 安装一个“连接器”,告诉Eclipse在遇到该目标时该怎么做。可以找到此目标的连接器here
  3. 至于maven-resources-plugin,除了升级POM中指定的插件版本之外,我没有看到任何其他选项。那里的错误说Eclipse的Maven插件无法使用旧的Maven插件。

    我不知道导致文件未找到错误的原因是什么,但怀疑是因为该文件包含在Eclipse未解包的任何内容中。