You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Florian MULLER <Fl...@hcuge.ch> on 2009/04/30 15:39:19 UTC

Dependency resolution with classifier

Hi,

I'm using Maven 2.1.0, with plugins: Maven WAR, Maven Release & Maven Eclipse.
My question is about the mechanism for resolving dependencies, more precisely resolution for a dependency with classifier.
I have a multi-projects architecture, with a parent and 5 modules: ejb, web-A, web-Z, webservices & ear.
With Maven WAR plugin, i "overlaying" the war-A into war-Z, with this configuration:

Into project-Z (web-Z):
	<plugin>
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-war-plugin</artifactId>
	        <version>2.1-beta-1</version>
	        <configuration>
			<dependentWarExcludes>WEB-INF/web.xml,META-INF/**,WEB-INF/classes/**,WEB-INF/lib/**,WEB-INF/conf/** </dependentWarExcludes>
			<packagingIncludes>**/*.html,**/*.js,**/*.jsp,**/*.class,**/*.xls,**/*.tld,**/*.xml,**/*.xlt,**/WEB-INF/lib/agenda-web-*-classes.jar,**/*.css,**/*.properties,**/*.zip,**/*.png,**/*.jpg,**/*.gif,**/*.ico,**/*.txt,**/*.cur,**/*.as</packagingIncludes>
			<useCache>false</useCache>
			<webXml>${maven.war.webxml}</webXml>
			<overlays>
				<overlay>
					<groupId>ch.hcuge.mdt.agenda</groupId>
					<artifactId>agenda-web</artifactId>
					<includes>
						<include>webRessources/**</include>
						<include>css/**</include>
						<include>definitions/**</include>
						<include>errors/**</include>
						<include>scripts/**</include>
						<include>WEB-INF/*.tld</include>
					</includes>
					<excludes>
						<exclude>WEB-INF/web.xml</exclude>
						<exclude>META-INF/**</exclude>
						<exclude>WEB-INF/lib/**</exclude>
						<exclude>WEB-INF/classes/**</exclude>
						<exclude>WEB-INF/conf/**</exclude>
					</excludes>
				</overlay>
			</overlays>
			<archive>
				<manifest>
					<addClasspath>true</addClasspath>
				</manifest>
			</archive>
		</configuration>

		<executions>
			<execution>
				<phase>generate-sources</phase>
				<goals>
					<goal>inplace</goal>
				</goals>
			</execution>
		</executions>     		
	</plugin>

And I built a jar with all web-A classes as like this:

Into project-A (web-A):
	<plugin>
		<artifactId>maven-war-plugin</artifactId>
		<version>2.1-beta-1</version>
		<configuration>
			<webXml>${maven.war.webxml}</webXml>
			<warSourceExcludes>/webapp/WEB-INF/lib/**,**/*.jar</warSourceExcludes>
			<packagingExcludes>/webapp/WEB-INF/lib/**,**/*.jar</packagingExcludes>

			<archive>
				<manifest>
					<addClasspath>true</addClasspath>
				</manifest>
			</archive>

			<attachClasses>true</attachClasses>
			<useCache>false</useCache>
		</configuration> 
	</plugin>

In adding an "<attachClasses />" to the plugin configuration, i get a web-A-1.0-SNAPHOT-classes.jar with all Java classes. And after, i use this jar as dependency of web-Z project, like this:
	<dependency>
		<groupId>com.swisscompagny</groupId>
		<artifactId>web-A</artifactId>
		<version>${project.parent.version}</version>
		<classifier>classes</classifier>
	</dependency>

This jar is used for the compile phase and like reference in my eclipse project.

Now, after this very long explanation of the context, i can expose my problem. First, the stuff that works...
I run a "mvn clean install" and my build process is executed successfully, all dependencies are resolved and the result is right.
After I run a "mvn eclipse:clean eclipse:eclipse", and the result is the same ... SUCCESSFUL!.

Now, I run a "mvn release:clean release:prepare release:perform" and... FAILURE! Dependencies are not resolved, particularly the "web-A-1.0-SNAPHOT-classes.jar" artifact. If i remove this dependency, the release is performed.
---
[WARNING] The dependency: com.swisscompagny:web-A:war:1.0.0-SNAPSHOT can't be resolved but has been found in the reactor.
This dependency has been excluded from the plugin execution. You should rerun this mojo after executing mvn install.

[WARNING] The dependency: com.swisscompagny:ejb:ejb:1.0.0-SNAPSHOT can't be resolved but has been found in the reactor.
This dependency has been excluded from the plugin execution. You should rerun this mojo after executing mvn install.

[WARNING] The dependency: com.swisscompagny:web-A:war:1.0.0-SNAPSHOT can't be resolved but has been found in the reactor.
This dependency has been excluded from the plugin execution. You should rerun this mojo after executing mvn install.

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) com.swisscompagny:web-A:war:1.0.0-SNAPSHOT

  Path to dependency:
        1) com.swisscompagny:web-Z:war:0.5.1-RC0-SNAPSHOT
        2) com.swisscompagny:web-A:war:1.0.0-SNAPSHOT

2) com.swisscompagny:ejb:ejb:1.5.1-RC0-SNAPSHOT

  Path to dependency:
        1) com.swisscompagny:web-Z:war:0.5.0-SNAPSHOT
        2) com.swisscompagny:ejb:ejb:1.5.0-SNAPSHOT

3) com.swisscompagny:web-A:jar:classes:1.5.0-SNAPSHOT

  Path to dependency:
        1) com.swisscompagny:web-Z:war:0.5.0-SNAPSHOT
        2) com.swisscompagny:web-A:jar:classes:1.0.0-SNAPSHOT

----------
3 required artifacts are missing.

for artifact:
  com.swisscompagny:web-Z:war:0.5.0-SNAPSHOT
---

I can reproduce this problem, with "mvn dependency:tree". It seems to be due at the mecanism of dependencies resolution.

Could you explain me this fact ? Do you think i could do all my desires with this configuration ? Please help me, i search any solution since a week...

Best regards,
Florian

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org