Search code examples
mavenmaven-3sakai

The desired archetype does not exist


When calling Maven to generate an archetype following the instructions at https://confluence.sakaiproject.org/display/BOOT/Sakai+Spring+MVC+Maven+Archetype, Maven complains about the archetype being inexistent, even though the file is located in the given archetype respository: https://source.sakaiproject.org/maven2/org/sakaiproject/maven-archetype/sakai-spring-maven-archetype/1.2/sakai-spring-maven-archetype-1.2.pom.

Maven version is:

>mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

This is what happens - it looks like the -DarchetypeRepository parameter is ignored:

> mvn archetype:generate -DarchetypeGroupId=org.sakaiproject.maven-archetype
     -DarchetypeArtifactId=sakai-spring-maven-archetype
     -DarchetypeVersion=1.2
     -DarchetypeRepository=https://source.sakaiproject.org/maven2
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[WARNING] Archetype not found in any catalog. Falling back to central repository.
[WARNING] Add a repository with id 'archetype' in your settings.xml if archetype's repository is elsewhere.
[WARNING] The POM for org.sakaiproject.maven-archetype:sakai-spring-maven-archetype:jar:1.2 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.395 s
[INFO] Finished at: 2020-01-11T12:24:20+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate (default-cli) on project standalone-pom: The desired archetype does not exist (org.sakaiproject.maven-archetype:sakai-spring-maven-archetype:1.2) -> [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

Solution

  • Turns out that Maven 3 changed the way archetype repositories are integrated. The -DarchetypeRepository parameter is not there anymore. Instead, archteype repositories need to be added to settings.xml:

    <profiles>
        <profile>
          <!-- the profile id is arbitrary --> 
          <id>sakai</id>
          <repositories>
            <repository>
              <!-- the repository id has to be named: archetype -->
              <id>archetype</id>
              <name>Repository for Sakai archetypes</name>
              <url>https://source.sakaiproject.org/maven2/</url>
              <releases>
                <enabled>true</enabled>
                <checksumPolicy>fail</checksumPolicy>
              </releases>
              <snapshots>
                <enabled>true</enabled>
                <checksumPolicy>warn</checksumPolicy>
              </snapshots>
            </repository>
          </repositories>
        </profile>
    </profiles>
    
    <!-- The profile needs to be added to activeProfiles in order to be taken into account -->
    <activeProfiles>
        <activeProfile>sakai</activeProfile>
    </activeProfiles>