I made a bit of progress, and I think I got it working. Here are the
changes I made:
Added the type and classifier qualification to the dependency:
<dependency>
<groupId>com.kiva</groupId>
<artifactId>mhs-core</artifactId>
<version>${project.version}</version>
<type>tar.bz2</type>
<classifier>server</classifier>
<scope>test</scope>
</dependency>
Changed to <goal>unpack-dependencies</goal> in the maven-dependency-
plugin. I think Brian mentioned this, but I didn't get it at first. I
still don't see why the unpack goal doesn't work on why the unpack-
dependencies one does. The unpack goal seems targeted at single
dependencies, and the latter seems targeted at multiple ones, and I'm
only interested in a single file, but I the unpack goal doesn't seem
to know the package is available within the current maven instance and
always tries to fetch from the repo.
-Josh
On Feb 7, 2008, at 2:35 PM, Joshua Pollak wrote:
Brian,
Thanks for the quick reply. I think based on your email I'm very
close, but not quite there....
On Feb 7, 2008, at 1:38 PM, Brian E. Fox wrote:
Put both projects under a common parent, then add the tar.bz2 as a
dependency of foo-integration-tests.
Ok, thats basically what I have, except I'm unclear on how to make
the tar.bz2 a dependency of the integration project (as opposed to
the jar that is also created).
I have this in the integration test project, but I don't know how to
specify the tar.bz2 as opposed to the jar:
<dependency>
<groupId>com.kiva</groupId>
<artifactId>foo-core</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
Then change dependency:unpack to dependency:unpack-dependencies and
set the configuration to include only this artifact (by group or
artifact, type etc).
I have the following, is that what you mean?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>extract-foo</id>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.kiva</groupId>
<artifactId>foo-core</artifactId>
<version>${project.version}</version>
<type>tar.bz2</type>
<outputDirectory>${project.build.directory}/
foo</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Then if you run the parent, when it gets to the integration tests,
if you have done at least mvn package, it will find the jar in the
target folder.
Given the above, when I run 'mvn integration-test' from the top-
level pom, I get the following, as if it was looking in my local or
remote repository for the tar.bz2. Since it already executed the
package phase, the tar.bz2 was correctly created however..
[INFO]
------------------------------------------------------------------------
[INFO] [dependency:unpack {execution: extract-mhs}]
[INFO] Configured Artifact: com.kiva:foo-core:server:2.2.0-
SNAPSHOT:tar.bz2
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
GroupId: com.kiva
ArtifactId: foo-core
Version: 2.2.0-SNAPSHOT
Reason: Unable to download the artifact from any repository
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=com.kiva -DartifactId=foo-
core -Dversion=2.2.0-SNAPSHOT -Dclassifier=server -
Dpackaging=tar.bz2 -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the
file there:
mvn deploy:deploy-file -DgroupId=com.kiva -DartifactId=foo-core -
Dversion=2.2.0-SNAPSHOT -Dclassifier=server -Dpackaging=tar.bz2 -
Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
I guess I'm missing one last step....
-Josh
From: Joshua Pollak [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 07, 2008 9:43 AM
To: [email protected]
Subject: [mojo-user] Integration testing a project?
Hello,
I have a project called foo with two modules, foo-core and foo-
integration-tests. foo-core outputs a tar.bz2 as its primary
artifact. I'd like to setup foo-integration-tests to extract this
artifact and run some tests on it via junit.
Currently I'm doing this by using the maven-dependency-plugin to
explicitly find the foo-core tar.bz2 snapshot artifact in the local
repository and extract it. But this requires manually running 'mvn
install' in the foo-core project.
I'd like to be able to do 'mvn integration-test' from the upper
level 'uber-pom' directory, just called 'foo'.
Can anyone help?
--
Joshua ChaitinPollak | Software Engineer
Kiva Systems, Inc., 225 Wildwood Ave, Woburn, MA 01970
--
Joshua ChaitinPollak | Software Engineer
Kiva Systems, Inc., 225 Wildwood Ave, Woburn, MA 01970
--
Joshua ChaitinPollak | Software Engineer
Kiva Systems, Inc., 225 Wildwood Ave, Woburn, MA 01970
--
Joshua ChaitinPollak | Software Engineer
Kiva Systems, Inc., 225 Wildwood Ave, Woburn, MA 01970