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

18,566

Solution 1

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

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

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

Solution 2

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.

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.

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

Share:
18,566
Piotr M
Author by

Piotr M

Updated on July 17, 2022

Comments

  • Piotr M
    Piotr M almost 2 years

    I did everything according to this guide: 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

    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

    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>