You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Luc De Graef <lu...@psa-antwerp.be> on 2011/07/01 21:14:29 UTC
Import scope / Test scope and dependency management
Hello,
I have a problem with the import-scope & dependency management (Maven 3.0.3).
There are 3 pom's involved.
The first is a 'ju-deps' dependency pom, merely used to encapsulate versions of third party libs.
[code]
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myself</groupId>
<artifactId>ju-deps</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>ju-deps</name>
<properties>
<junit.version>4.8.1</junit.version>
</properties>
<dependencies>
<!--- #1 : if one specifies the test scope in this dependency pom, the test sources will not compile !!! -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<!--scope>test</scope-->
</dependency>
</dependencies>
</project>
[/code]
The second one is a parent project. In this project I use a dependency management section (so that child projects do not need to specify a version).
I 'import' the ju-deps pom. Is this a correct scope?
[code]
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myself</groupId>
<artifactId>parentapp</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<modules>
<module>sampleapp</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.myself</groupId>
<artifactId>ju-deps</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
[/code]
The third one is a 'sampleapp' child project, that provides a test class (so it needs a dependency to ju-deps).
[code]
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.myself</groupId>
<artifactId>parentapp</artifactId>
<version>1.0</version>
</parent>
<artifactId>sampleapp</artifactId>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<!-- #2. If one specifies a pom inside dependency management, one needs to give the version,
although the version was specified in the dependency management section of the parent.
[ERROR] The project com.myself:sampleapp:1.0 (D:\tryout\import\sampleapp\pom.xml) has 1 error
[ERROR] 'dependencies.dependency.version' for com.myself:ju-deps:pom is missing. @ line 16, column 21-->
<dependency>
<groupId>com.myself</groupId>
<artifactId>ju-deps</artifactId>
<!--version>1.0</version-->
<type>pom</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>
[/code]
There are 2 problems (indicated in the pom source).
#1 : if one specifies a test scope in a dependency pom, the test sources in the sampleapp child project do not get (test-)compiled correctly. This seems something I can live with.
#2 : If one specifies a dependent pom in a child project, one needs to give the version, although the version was specified in the dependency management section of the parent. What am I doing wrong here?
Regards,
Luc
Re: Import scope / Test scope and dependency management
Posted by Guillaume Polet <gu...@gmail.com>.
The scope 'test' is not transitive. Therefore depending on ju-deps with
the scope test set on the junit dependency will not work in your case.
Guillaume
Le 1/07/2011 21:14, Luc De Graef a écrit :
> Hello,
>
> I have a problem with the import-scope& dependency management (Maven 3.0.3).
>
> There are 3 pom's involved.
>
> The first is a 'ju-deps' dependency pom, merely used to encapsulate versions of third party libs.
>
> [code]
> <project>
> <modelVersion>4.0.0</modelVersion>
> <groupId>com.myself</groupId>
> <artifactId>ju-deps</artifactId>
> <version>1.0</version>
> <packaging>pom</packaging>
> <name>ju-deps</name>
>
> <properties>
> <junit.version>4.8.1</junit.version>
> </properties>
>
> <dependencies>
> <!--- #1 : if one specifies the test scope in this dependency pom, the test sources will not compile !!! -->
> <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <version>${junit.version}</version>
> <!--scope>test</scope-->
> </dependency>
> </dependencies>
> </project>
> [/code]
>
> The second one is a parent project. In this project I use a dependency management section (so that child projects do not need to specify a version).
> I 'import' the ju-deps pom. Is this a correct scope?
>
> [code]
> <project>
> <modelVersion>4.0.0</modelVersion>
> <groupId>com.myself</groupId>
> <artifactId>parentapp</artifactId>
> <packaging>pom</packaging>
> <version>1.0</version>
> <modules>
> <module>sampleapp</module>
> </modules>
> <dependencyManagement>
> <dependencies>
> <dependency>
> <groupId>commons-logging</groupId>
> <artifactId>commons-logging</artifactId>
> <version>1.1.1</version>
> </dependency>
> <dependency>
> <groupId>com.myself</groupId>
> <artifactId>ju-deps</artifactId>
> <version>1.0</version>
> <type>pom</type>
> <scope>import</scope>
> </dependency>
> </dependencies>
> </dependencyManagement>
> </project>
> [/code]
>
> The third one is a 'sampleapp' child project, that provides a test class (so it needs a dependency to ju-deps).
> [code]
> <project>
> <modelVersion>4.0.0</modelVersion>
> <parent>
> <groupId>com.myself</groupId>
> <artifactId>parentapp</artifactId>
> <version>1.0</version>
> </parent>
> <artifactId>sampleapp</artifactId>
> <dependencies>
> <dependency>
> <groupId>commons-logging</groupId>
> <artifactId>commons-logging</artifactId>
> </dependency>
> <!-- #2. If one specifies a pom inside dependency management, one needs to give the version,
> although the version was specified in the dependency management section of the parent.
> [ERROR] The project com.myself:sampleapp:1.0 (D:\tryout\import\sampleapp\pom.xml) has 1 error
> [ERROR] 'dependencies.dependency.version' for com.myself:ju-deps:pom is missing. @ line 16, column 21-->
> <dependency>
> <groupId>com.myself</groupId>
> <artifactId>ju-deps</artifactId>
> <!--version>1.0</version-->
> <type>pom</type>
> <scope>test</scope>
> </dependency>
> </dependencies>
> </project>
> [/code]
>
> There are 2 problems (indicated in the pom source).
> #1 : if one specifies a test scope in a dependency pom, the test sources in the sampleapp child project do not get (test-)compiled correctly. This seems something I can live with.
> #2 : If one specifies a dependent pom in a child project, one needs to give the version, although the version was specified in the dependency management section of the parent. What am I doing wrong here?
>
> Regards,
>
> Luc
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org