On Wed, Mar 13, 2013 at 4:10 PM, Wolf Geldmacher <[email protected]>wrote:
> Hail all ye maven gurus! > > I've (again) hit some issues with the-maven-way(tm) that I'd appreciate > your thoughts on: > > Using Maven 3.0.5/Java 1.7.0_10/Linux on an (abstracted) aggregation > project with two POMs: > > maven/pom.xml: > <project> > <modelVersion>4.0.0</**modelVersion> > > <groupId>maven.issue</groupId> > <artifactId>aggregation</**artifactId> > <version>2014.0.0-SNAPSHOT</**version> > <packaging>pom</packaging> > > <url>http://localhost/**documentation/maven<http://localhost/documentation/maven> > </url> > > <dependencies> > <dependency> > <groupId>maven.issue</groupId> > <artifactId>dependency</**artifactId> > <version>1.0</version> > </dependency> > </dependencies> > > <properties> > <project.build.sourceEncoding>**UTF-8</project.build.** > sourceEncoding> > </properties> > > <modules> > <module>dependency</module> > </modules> > > <build> > <plugins> > <plugin> > <groupId>org.codehaus.mojo</**groupId> > <artifactId>exec-maven-plugin<**/artifactId> > <version>1.2.1</version> > <configuration> > <executable>echo</executable> > </configuration> > <executions> > <!-- > Binding to the clean phase will make the > clean fail when any dependencies are specified > and we try run clean for a fresh project! > --> > <execution> > <id>clean</id> > <phase>clean</phase> > <goals> <goal>exec</goal> </goals> > <configuration> > <arguments> > <argument>Executing mvn clean</argument> > </arguments> > </configuration> > </execution> > </executions> > </plugin> > </plugins> > </build> > > <reporting> > <plugins> > <plugin> > <groupId>org.apache.maven.**plugins</groupId> > <artifactId>maven-site-plugin<**/artifactId> > <version>3.2</version> > </plugin> > <plugin> > <groupId>org.apache.maven.**plugins</groupId> > <artifactId>maven-project-**info-reports-plugin</** > artifactId> > <version>2.6</version> > <configuration> > <dependencyLocationsEnabled>**false</** > dependencyLocationsEnabled> > </configuration> > </plugin> > </plugins> > </reporting> > > </project> > > maven/dependency/pom.xml: > <project> > <modelVersion>4.0.0</**modelVersion> > > <groupId>maven.issue</groupId> > <artifactId>dependency</**artifactId> > <version>1.0</version> > > <url>http://localhost/**documentation/maven/dependency<http://localhost/documentation/maven/dependency> > **</url> > > <reporting> > <plugins> > <plugin> > <groupId>org.apache.maven.**plugins</groupId> > <artifactId>maven-site-plugin<**/artifactId> > <version>3.2</version> > </plugin> > <plugin> > <groupId>org.apache.maven.**plugins</groupId> > <artifactId>maven-project-**info-reports-plugin</** > artifactId> > <version>2.6</version> > </plugin> > </plugins> > </reporting> > > </project> > > > (1) When I run "mvn clean" on the top level *for the first time* I get > this error: > > [ERROR] Failed to execute goal on project aggregation: Could not resolve > dependencies \ > for project maven.issue:aggregation:pom:**2014.0.0-SNAPSHOT: \ > Failure to find maven.issue:dependency:jar:1.0 in <URL of our MRM> > > Obviously it cannot be in the MRM yet, as I'm building (this version) for > the first time, but: > - Why does maven even try to resolve this dependency when cleaning? > - And (just out of curiosity) why does it try to resolve that dependency > outside of the reactor? > > (2) Once the maven build cycle has been run beyond the "install" phase for > this project the dependency will be satisfied either from the local cache > or from the MRM - but: This makes a first time clean for each new version > behave differently from all later invocations and breaks the "mvn clean > install" mantra used by CI systems. The scenario cannot be that exotic and > we all want stable and reproducible builds - so: How do you solve it? > > (3) If you comment out the binding of "exec-maven-plugin:exec" to the > "clean" phase, a first time clean will succeed. > > Shouldn't adding a plugin to some phase be transparent w/r/t the > prerequisites of the phase? Who's to blame for the unexpected change in > behaviour? Is this a problem in the Maven core? Is this an issue with the > "exec-maven-plugin"? > > (4) Running "mvn site" on this same project shows a very similar problem: > The first time a site is generated (i.e. without having run the maven build > cycle to, or beyond, the "install" phase), site generation will fail with > the same message as above, even without any additional plugins bound to the > site phase. > > Is it considered "best practice" that the "site" life cycle implicitly > depends on the "build" life cylce, at least as far as dependencies are > concerned? If so: Why is it a different life cycle then? If not: Is there > some mechanism (type of dependency?) that I can use to specify a dependency > @compile, but not @site time? > > Thanks & Regards, > Wolf > > (hopefully the POMs make it through to the mailing list - otherwise i will > post a follow-up with external links) > > ------------------------------**------------------------------**--------- > To unsubscribe, e-mail: > users-unsubscribe@maven.**apache.org<[email protected]> > For additional commands, e-mail: [email protected] > > For the clean issue, you should add the maven-clean-plugin itself to the execution and not the exec-maven-plugin. see http://maven.apache.org/plugins/maven-clean-plugin/usage.html -- Adrien Rivard
