Hi Lóránt, > However, requiring each project to do this is rather error prone, so I'd > like to define a pattern in the company parent POM, and have all projects > automatically derive their location from there. > > This doesn't work. If I set a location in our top-level POM to, say, > "scp://maven-sites/var/www/", sites will be published to folders under that > location based on their artifactId. This means that I get URLs like this: > > http://maven-sites.local/hello-parent/ > http://maven-sites.local/hello-parent/hello-core/ > > I have several problems with this: > > - The URLs I get are not very nice. > - The company POM's site gets published to the root location ( > http://maven-sites.local/), which causes all kinds of troubles. > - If I have two projects with different groupIds, but with the same > artifactId, their sites will collide. > > Is there an easy way to solve this, or should all projects define their own > site locations?
I'm doing something similar by using the following properties / definitions in my parent (company) pom: <properties> <!-- URL for deployable web sites: --> <distribution.repository.website>scp://myserver/var/apache2/2.2/htdocs/docs</distribution.repository.website> <!-- standard base URL for deployed web sites: --> <base.site.url>http://myserver/docs</base.site.url> </properties> <url>${base.site.url}/${project.groupId}/${project.artifactId}/${project.version}</url> <distributionManagement> ... <site> <id>releases-site</id> <name>Published web sites</name> <url>${distribution.repository.website}/${project.groupId}/${project.artifactId}/${project.version}</url> </site> </distributionManagement> This lets all projects that use my parent pom deploy their websites under the "/docs" subdirectory under my Apache's document root directory "/var/apache2/2.2/htdocs/". Note: The group Id isn't "splitted" in several subdirectories, i.e. you'll end up having "com.example/blah/1.0-SNAPSHOT" as path, not "com/example/blah/1.0-SNAPSHOT". Using the following default site.xml in my projects lets "mvn site-deploy" resolve parent relationship links by using the links/urls given in the parent pom: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/DECORATION/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd"> <publishDate format="dd.MM.yyyy" position="right" /> <version position="right" /> <poweredBy> <logo name="Maven" href="http://maven.apache.org/" img=" http://maven.apache.org/images/logos/maven-feather.png" /> </poweredBy> <body> <menu inherit="true" /> <menu ref="parent" /> <menu ref="reports" /> <menu ref="modules" /> </body> </project> HTH Thorsten