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






Reply via email to