java 无法在项目 acme-module 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile): Compilation failure

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28896847/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 14:22:56  来源:igfitidea点击:

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project acme-module: Compilation failure:

javaspringmavenmagnolia

提问by Piotr M

I did everything according to this guide: https://documentation.magnolia-cms.com/display/DOCS/Getting+started+with+Blossom

我根据本指南做了一切:https: //documentation.magnolia-cms.com/display/DOCS/Getting+started+with+Blossom

I get these errors when I'm trying follow last step, mvn install (mvn clean works fine). Here is output after mvn clean install

当我尝试执行最后一步 mvn install (mvn clean 工作正常)时出现这些错误。这是之后的输出mvn clean install

tests-imac:acme test$ mvn clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.acme:acme-webapp:war:1.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ com.acme:acme-webapp:[unknown-version], /Users/staz/blossomproj/acme/acme-webapp/pom.xml, line 35, column 15
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.acme:acme-module:jar:1.0-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: javax.servlet:servlet-api:jar -> version 2.4 vs 2.5 @ line 77, column 17
[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] Reactor Build Order:
[INFO] 
[INFO] acme (parent pom)
[INFO] acmeModule Magnolia Module
[INFO] acme: webapp
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building acme (parent pom) 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ acme ---
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ acme ---
[INFO] Installing /Users/staz/blossomproj/acme/pom.xml to /Users/test/.m2/repository/com/acme/acme/1.0-SNAPSHOT/acme-1.0-SNAPSHOT.pom
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building acmeModule Magnolia Module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ acme-module ---
[INFO] Deleting /Users/staz/blossomproj/acme/acme-module/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ acme-module ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ acme-module ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 4 source files to /Users/staz/blossomproj/acme/acme-module/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/AcmeModule.java:[17,17] error: no suitable method found for initRootWebApplicationContext(Class<AcmeModuleConfiguration>)
[ERROR]     method BlossomModuleSupport.initRootWebApplicationContext(ContextLoader) is not applicable
      (actual argument Class<AcmeModuleConfiguration> cannot be converted to ContextLoader by method invocation conversion)
    method BlossomModuleSupport.initRootWebApplicationContext(String) is not applicable
      (actual argument Class<AcmeModuleConfiguration> cannot be converted to String by method invocation conversion)
/Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/AcmeModule.java:[18,17] error: method initBlossomDispatcherServlet in class BlossomModuleSupport cannot be applied to given types;
[ERROR]  actual argument Class<BlossomServletConfiguration> cannot be converted to String by method invocation conversion
/Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[88,22] error: cannot find symbol
[ERROR]  variable handlerMapping of type BlossomHandlerMapping
/Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[140,20] error: method addContextAttribute in class AbstractRenderer cannot be applied to given types;
[ERROR]  actual argument Class<Directives> cannot be converted to ContextAttributeConfiguration by method invocation conversion
/Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[141,20] error: method addContextAttribute in class AbstractRenderer cannot be applied to given types;
[INFO] 5 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] acme (parent pom) .................................. SUCCESS [  0.869 s]
[INFO] acmeModule Magnolia Module ......................... FAILURE [  5.262 s]
[INFO] acme: webapp ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.003 s
[INFO] Finished at: 2015-03-06T12:01:46+01:00
[INFO] Final Memory: 23M/183M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project acme-module: Compilation failure: Compilation failure:
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/AcmeModule.java:[17,17] error: no suitable method found for initRootWebApplicationContext(Class<AcmeModuleConfiguration>)
[ERROR] method BlossomModuleSupport.initRootWebApplicationContext(ContextLoader) is not applicable
[ERROR] (actual argument Class<AcmeModuleConfiguration> cannot be converted to ContextLoader by method invocation conversion)
[ERROR] method BlossomModuleSupport.initRootWebApplicationContext(String) is not applicable
[ERROR] (actual argument Class<AcmeModuleConfiguration> cannot be converted to String by method invocation conversion)
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/AcmeModule.java:[18,17] error: method initBlossomDispatcherServlet in class BlossomModuleSupport cannot be applied to given types;
[ERROR] actual argument Class<BlossomServletConfiguration> cannot be converted to String by method invocation conversion
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[88,22] error: cannot find symbol
[ERROR] variable handlerMapping of type BlossomHandlerMapping
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[140,20] error: method addContextAttribute in class AbstractRenderer cannot be applied to given types;
[ERROR] actual argument Class<Directives> cannot be converted to ContextAttributeConfiguration by method invocation conversion
[ERROR] /Users/staz/blossomproj/acme/acme-module/src/main/java/com/acme/BlossomServletConfiguration.java:[141,20] error: method addContextAttribute in class AbstractRenderer cannot be applied to given types;
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :acme-module

Magnolia version - 5.3.7 EE Blossom module version - 3.0.5

Magnolia 版本 - 5.3.7 EE Blossom 模块版本 - 3.0.5

pom.xml

pom.xml

    <?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>acme</artifactId>
    <groupId>com.acme</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.acme</groupId>
  <artifactId>acme-module</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>acmeModule Magnolia Module</name>
  <!--
  <description>Please uncomment and fill in ...</description>
  -->
  <properties>
    <magnoliaVersion>5.3.7</magnoliaVersion>
    <javaVersion>1.6</javaVersion>
    <blossomVersion>3.0.5</blossomVersion>
    <springVersion>4.1.4.RELEASE</springVersion>
  </properties>

  <dependencies>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
</dependency>
    <dependency>
      <groupId>info.magnolia</groupId>
      <artifactId>magnolia-core</artifactId>
      <version>${magnoliaVersion}</version>
    </dependency>
    <dependency>
      <groupId>info.magnolia</groupId>
      <artifactId>magnolia-rendering</artifactId>
      <version>${magnoliaVersion}</version>
    </dependency>
    <dependency>
      <groupId>info.magnolia</groupId>
      <artifactId>magnolia-templating</artifactId>
      <version>${magnoliaVersion}</version>
    </dependency>
    <dependency>
      <groupId>info.magnolia</groupId>
      <artifactId>magnolia-templating-jsp</artifactId>
      <version>${magnoliaVersion}</version>
    </dependency>
    <dependency>
      <groupId>info.magnolia.blossom</groupId>
      <artifactId>magnolia-module-blossom</artifactId>
      <version>${blossomVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${springVersion}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${springVersion}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <!-- For @Valid - JSR-303 Bean Validation API -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>4.3.1.Final</version>
    </dependency>

    <!-- TEST -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>${javaVersion}</source>
          <target>${javaVersion}</target>
        </configuration>
      </plugin>
    </plugins>

    <!-- default resources configuration which will filter the module descriptor -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
          <include>META-INF/magnolia/*</include>
        </includes>
      </resource>
    </resources>
  </build>

  <repositories>
    <repository>
      <id>magnolia.public</id>
      <url>https://nexus.magnolia-cms.com/content/groups/public</url>
      <snapshots>
      </snapshots>
    </repository>

    <repository>
      <id>magnolia.enterprise.releases</id>
      <url>https://nexus.magnolia-cms.com/content/repositories/magnolia.enterprise.releases</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

    <repository>
      <id>vaadin-addons</id>
      <url>https://maven.vaadin.com/vaadin-addons</url>
    </repository>
  </repositories>

</project>

采纳答案by Alexander

regarding the warning

关于警告

[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: javax.servlet:servlet-api:jar -> version 2.4 vs 2.5 @ line 77, column 17

You probably have a transient dependency that requires javax.servlet:servlet-api:2.5, but you have defined javax.servlet:servlet-api:2.4

您可能有一个需要的瞬态依赖项javax.servlet:servlet-api:2.5,但您已定义javax.servlet:servlet-api:2.4

You can either switch from javax.servlet:servlet-api:2.4to javax.servlet:servlet-api:2.5or add another exclusion for the javax.servlet:servlet-api:2.5dependency. Use mvn dependency:listto find out which dependency provides the transient dependency.

您可以切换javax.servlet:servlet-api:2.4到依赖项javax.servlet:servlet-api:2.5或为javax.servlet:servlet-api:2.5依赖项添加另一个排除项。使用mvn dependency:list找出其中的依赖提供了短暂的依赖。

Then there's another warning

然后还有另一个警告

[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ com.acme:acme-webapp:[unknown-version], /Users/staz/blossomproj/acme/acme-webapp/pom.xml, line 35, column 15

add [...]

添加 [...]

...
    <build>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
          </plugin>
        </plugins>
      </pluginManagement>
    </build>
...

to you pom.xml

给你 pom.xml

回答by sigget

Blossom 3.0.6 was released yesterday to make it easier to use Spring java config. With that BlossomModuleSupport got new methods to initialize the application context and servlets using configuration classes. These are the methods that can't be found which breaks compilation.

Blossom 3.0.6 昨天发布,让 Spring java 配置更容易使用。通过该 BlossomModuleSupport 获得了使用配置类初始化应用程序上下文和 servlet 的新方法。这些是无法找到破坏编译的方法。

With that the archetype snapshot version you're using was updated to generate a project that uses Spring java config, and hence these new methods.

随着您使用的原型快照版本被更新,以生成一个使用 Spring java 配置的项目,因此这些新方法。

So, you need to use 3.0.6 with the archetype and all should be fine.

因此,您需要将 3.0.6 与原型一起使用,一切都应该没问题。