What are the URLs of all the Maven Archetype catalogs that you know about?

57,463

Solution 1

To be honest, I don't really see the point of building a list of all catalogs. It looks more "natural" to me to pick a project first and then add the catalog if required. This is why there is IMO more value in a list of archetypes. You'll need their name anyway, even if you have all catalogs in a list.

Anyway, here are some candidates;

Edit: after Matthew clarification on archetype's catalogs.

I misunderstood some concepts and my answer isn't clear and correct.

The point of catalogs is exactly to not have to know the names of archetypes in advance. They are made to publish archetypes and allow mvn archetype:generate to list archetypes. So it makes sense to add "external" catalogs (understand not in the internal) to get a wider list of known archetypes when using mvn archetype:generate.

For archetypes without a catalog, users have to type an horrible command that must be documented somewhere (because it requires knowledge of the artifact).

Regarding my propositions:

  • Atlassian's archetypes are in the internal catalog. Not a good proposition.

  • Grails archetypes aren't in the internal catalog or in a published archetype-catalog.xml. Not a good proposition.

  • ServiceMix has catalogs here http://servicemix.apache.org/tooling/ (based on a http://servicemix.apache.org/tooling/<version>/archetype-catalog.xml pattern). Valid proposition.


One fun thing I learned while digging this. The maven guys provides a nice tool that helps people developing archetypes to create a catalog XML: the archetype:crawl goal basically crawls a local Maven repository searching for Archetypes and generates/updates a archetype-catalog.xml file in ~/.m2/repository by default. Projects, people just have to run periodically something like:

mvn archetype:crawl -Dcatalog=/var/www/html/archetype-catalog.xml

Grails doesn't provide a catalog. To create a project, we have to run:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails \
-DarchetypeArtifactId=grails-maven-archetype \
-DarchetypeVersion=1.0 \
-DarchetypeRepository=http://snapshots.repository.codehaus.org \
-DgroupId=example -DartifactId=my-app

But once we did this, we have the archetype in our local repository. So if we type:

mvn archetype:crawl -Dcatalog=/home/<me>/.m2/archetype-catalog.xml

The archetype get listed in ~/.m2/archetype-catalog.xml and we can now use the mvn archetype:generate for Grails too (see option 5):

mvn archetype:generate
...
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -> maven-archetype-archetype (archetype)
2: local -> maven-archetype-j2ee-simple (j2ee)
3: local -> maven-archetype-quickstart (quickstart)
4: local -> maven-archetype-webapp (webapp)
5: local -> grails-maven-archetype (maven-project)
6: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
...

This is of course a (hugly) workaround and it might have side effects (you won't see new versions of archetypes). Actually, I don't think the archetype:crawl goal is intended for this use. I would like all projects them to publish their archetypes.

Solution 2

Terracotta has one but I don't know the url off-hand...will post back. Also, I have used archetypes in the past from AppFuse (http://static.appfuse.org/releases/) and Webtide although I don't know where to find their archetype catalogs.

The Terracotta repository and catalog are here: http://www.terracotta.org/download/reflector/maven2/

Perhaps this is useful: http://docs.codehaus.org/display/MAVENUSER/Archetypes+List

Solution 3

The nexus index that is produced by Nexus and consumed by M2eclipse knows about all the archetypes and lets you choose them when you create a new maven project from the ide.

Solution 4

For Maven Archetype list refer this link http://www.myjeeva.com/2012/06/exclusive-maven-archetype-list/ (you will find around 607 Archetypes).

While using mvn archetype:generate command at question of Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 197:

provide archetype number from above link.

Note: default value is 197

  • 197 -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
Share:
57,463

Related videos on Youtube

Matthew McCullough
Author by

Matthew McCullough

Matthew McCullough works for GitHub, Inc. and trains audiences around the world on the most effective use of the Git version control system and GitHub collaboration platform. In supplement to travel-based teaching, he writes books and records videos for O'Reilly and Manning on the topics of delivering technical presentations, the use of modern build and continuous integration tools, and version control industry best practices.

Updated on September 20, 2020

Comments

  • Matthew McCullough
    Matthew McCullough over 3 years

    Maven Archetypes are the "templates" by which you can quickly generate a running example of a given framework or project type. I am trying to compile a list of all the Maven archetype catalogs currently active on the net.

    From the Maven documentation about catalog files:

    Knowledge about archetypes are stored in catalogs.

    The catalogs are xml files.

    The Archetype Plugin comes bundled with an internal catalog. This one is used by default.

    The Archetype Plugin can use catalogs from local filesystem and from HTTP connections.

    So far, I've gathered this list of repositories that do publish catalogs, but would love to see if anyone knows of more:

    mvn archetype:generate
    -DarchetypeCatalog=local
    -DarchetypeCatalog=remote
    -DarchetypeCatalog=http://repo.fusesource.com/maven2
    -DarchetypeCatalog=http://cocoon.apache.org
    -DarchetypeCatalog=http://download.java.net/maven/2
    -DarchetypeCatalog=http://myfaces.apache.org
    -DarchetypeCatalog=http://tapestry.formos.com/maven-repository
    -DarchetypeCatalog=http://scala-tools.org
    -DarchetypeCatalog=http://www.terracotta.org/download/reflector/maven2/
    

    Links to same: 1) FuseSource 2) Cocoon 3) Java.net 4) MyFaces 5) Tapestry 6) Scala Catalog 7) Terracotta Catalog

    You'll notice that if the repository actually publishes an archetype catalog (all of the above do), you'll get a UI prompt of all the choices found in that archetype-catalog.xml. For example:

    mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org
    
    [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
    Choose archetype:
    1: http://scala-tools.org -> scala-archetype-simple (A simple scala project)
    2: http://scala-tools.org -> lift-archetype-blank (A blank/empty liftweb project)
    3: http://scala-tools.org -> lift-archetype-basic (A basic liftweb project (with DB, css, ...))
    Choose a number:  (1/2/3):
    

    If you want to view the Scala catalog file directly for example, you can browse to http://scala-tools.org/archetype-catalog.xml

    But if the repository doesn't provide an archetype-catalog.xml, then just as PascalT says, you'll need to know the name in advance (much less convenient) and pass it in command line arguments.

    • Richard
      Richard over 6 years
      Unfortunately, as of Maven 3 (I believe) passing a URL or filename of a catalog on the command line to mvn archetype:generate -DarchetypeCatalog=... as done above is no longer possible. Only local, remote and internal are supported and configuration has to happen in the settings.xml.
  • Matthew McCullough
    Matthew McCullough about 15 years
    Thanks for the additions. If you are using archetype:generate with a catalog name, you'll be presented with a list to choose from, so you don't have to know the name of the archetype you are after in advance. maven.atlassian.com... doesn't appear to have an archetype-catalog.xml
  • Matthew McCullough
    Matthew McCullough about 15 years
    It looks like this (download.terracotta.org/maven2/index.html) is the Terracotta repo, but it doesn't seem to have a archetype-catalog.xml
  • Alex Miller
    Alex Miller about 15 years
    The Terracotta one should be fixed now.
  • Devanshu Mevada
    Devanshu Mevada about 15 years
    Thanks for the clarification about catalogs. I'll edit my answer to clarify. And btw, Atlassian archetypes are actually in the internal catalog.
  • Matthew McCullough
    Matthew McCullough about 15 years
    Terracotta catalog FTW! Thanks Alex!
  • Matthew McCullough
    Matthew McCullough about 15 years
    Cool update. Thanks for all the new data Pascal. Also note that there's shorthand for ~/.m2/archetype-catalog.xml -- just say -Dcatalog=local It still doesn't solve the fact that Grails isn't providing one, but it does make it clean once you generate it.
  • Alex Miller
    Alex Miller about 15 years
    By the way Matt, please use the url in the original comment ( terracotta.org/download/reflector/maven2 ) and not the one you put in the comment. The original is the official link and will redirect to actual (which will likely change today in fact).
  • Matthew McCullough
    Matthew McCullough about 15 years
    Ok. I edited the original article earlier this morning and it links to: terracotta.org/download/reflector/maven2 -- the correct one.
  • Henryk Konsek
    Henryk Konsek over 13 years
    This is only a list of internal archetypes. Maven's remote catalog is much bigger - repo1.maven.org/maven2/archetype-catalog.xml .
  • Matthew McCullough
    Matthew McCullough over 13 years
    This is only this large since they started using the indexer. When this was originally answered, the central catalog was manually maintained in SVN.
  • Lee Chee Kiam
    Lee Chee Kiam over 11 years
    In case you would like to know, here is the URL maven-us.nuxeo.org/nexus/content/groups/public/…
  • jeevatkm
    jeevatkm about 9 years
    Kindly let me know the view/reason before you downvote. So that I can improve my answer or provide explanation. Thanks.
  • Gautam
    Gautam over 4 years
    your post resembles a self promotion and thus the downvote.