Uploaded image for project: 'Maven Site Plugin'
  1. Maven Site Plugin
  2. MSITE-725

site deploy, distributionManagement and pom inheritance : fail to resolve settings.xml properties

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Duplicate
    • 3.3, 3.4
    • None
    • site:deploy
    • None
    • windows / linux

    Description

      I have a blocker issue with distribution management URL for site deployment, when I use a property coming from the maven settings.xml file, and I define the distrib management in a super pom : it fails when running site deploy commands on sub-projects.

      You can reproduce it very easily :

      • Create a root project with this pom :
      <project>
      	<modelVersion>4.0.0</modelVersion>
      	<groupId>com.test</groupId>
      	<artifactId>testsite1</artifactId>
      	<version>1.0.0-SNAPSHOT</version>
      	<packaging>pom</packaging>
      	<name>level 1</name>
      
      	<distributionManagement>
      		<site>
      			<id>site</id>
      			<url>${sitePublishDir}</url>
      		</site>
      	</distributionManagement>
      	<build>
      		<pluginManagement>
      			<plugins>
      				<plugin>
      					<groupId>org.apache.maven.plugins</groupId>
      					<artifactId>maven-site-plugin</artifactId>
      					<version>3.4</version>
      				</plugin>
      			</plugins>
      		</pluginManagement>
      	</build>
      </project>
      
      • create a sub project with this pom :
      <project>
      	<modelVersion>4.0.0</modelVersion>
      	<parent>
      		<groupId>com.test</groupId>
      		<artifactId>testsite1</artifactId>
      		<version>1.0.0-SNAPSHOT</version>
      	</parent>
      	<groupId>com.test</groupId>
      	<artifactId>testsite2</artifactId>
      	<version>1.0.0-SNAPSHOT</version>
      	<packaging>pom</packaging>
      	<name>level 2</name>
      </project>
      

      Then, run a "clean install site-deploy" command on project root -> it works
      Run the same command on the sub project, you get that error :

      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 5.751 s
      [INFO] Finished at: 2014-07-15T12:43:56+02:00
      [INFO] Final Memory: 15M/224M
      [INFO] ------------------------------------------------------------------------
      [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.4:deploy (default-deploy) on project testsite2: Execution default-deploy of goal org.apache.maven.plugins:maven-site-plugin:3.4:deploy failed: Base URI is not absolute: $%7bsitePublishDir%7d -> [Help 1]
      org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.4:deploy (default-deploy) on project testsite2: Execution default-deploy of goal org.apache.maven.plugins:maven-site-plugin:3.4:deploy failed: Base URI is not absolute: $%7bsitePublishDir%7d
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
      	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
      	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
      	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
      	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
      	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
      	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
      	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
      	at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
      	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
      	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
      	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
      Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-deploy of goal org.apache.maven.plugins:maven-site-plugin:3.4:deploy failed: Base URI is not absolute: $%7bsitePublishDir%7d
      	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:143)
      	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
      	... 19 more
      Caused by: java.lang.IllegalArgumentException: Base URI is not absolute: $%7bsitePublishDir%7d
      	at org.apache.maven.doxia.site.decoration.inheritance.URIPathDescriptor.<init>(URIPathDescriptor.java:73)
      	at org.apache.maven.plugins.site.deploy.AbstractDeployMojo.getTopLevelProject(AbstractDeployMojo.java:827)
      	at org.apache.maven.plugins.site.deploy.SiteDeployMojo.determineDeploySite(SiteDeployMojo.java:67)
      	at org.apache.maven.plugins.site.deploy.AbstractDeployMojo.getDeploySite(AbstractDeployMojo.java:235)
      	at org.apache.maven.plugins.site.deploy.AbstractDeployMojo.execute(AbstractDeployMojo.java:166)
      	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
      	... 20 more
      
      

      I precise that I get the exact same error if I duplicate the distribution management in the sub project pom.

      The only ugly workaround I've found so far is to add a -DsitePublishDir=xxx in the command line : in this case, it works fine, but the sitePublishDir information is duplicated

      Attachments

        Issue Links

          Activity

            People

              hboutemy Herve Boutemy
              iguimiot Guimiot Isabelle
              Votes:
              3 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: