views:

33

answers:

1

Hello,

Something bother me a lot... On a big project with many dependencies, some of them are set as SNAPSHOT in Maven2.

The matter is that it seems i can't get the sources through Eclipse without loading the project or fixing the dependency to the last release. For debugging, it's really annoying me...

EDIT

This is what i get in eclipse maven console:

26/08/10 11:31:46 CEST: Downloading http://repo-maven/archiva/repository/snapshots/com/blabla/1.1-SNAPSHOT/blabla-1.1-20100824.213711-80-javadoc.jar
26/08/10 11:31:47 CEST: Could not download sources for com.blabla:blabla:1.1-20100824.213711-80

On archiva i can see the deployed stuff i want to retrieve in eclipse...

Repository   snapshots
Group ID  com.blabla
Artifact ID  blabla
Version  1.1-20100824.213711-80
Packaging  jar
Parent  com.blabla bla 1.1-SNAPSHOT (View)
Other Versions  1.1-20100824.213535-79

I can download sources of this artifact with my browser but not within Eclipse... Any idea?

+1  A: 

The matter is that it seems I can't get the sources through Eclipse without loading the project or fixing the dependency to the last release. For debugging, it's really annoying me...

Well, these modules are probably not publishing source JARs as part of the "regular" build process (i.e. outside the release). If these modules are under your control (which is my understanding), configuring the Maven Source Plugin to produce source JARs for them and deploying them in your corporate repo should solve the problem. From the Usage page:

Installing the sources along with your artifact

There are two ways to do this. You can either bind this plugin to a phase or you can add it to a profile. The goals source:jar-no-fork and source:test-jar-no-fork are preferred for binding the goal to the build lifecycle.

Installing the sources using a phase binding

Here is how you would configure the plugin in your pom.xml to run automatically during the verify phase:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.2</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

We are using the verify phase here because it is the phase that comes before the install phase, thus making sure that the sources jar has been created before the install takes place.

Installing the sources using a profile

If you want to install a jar of your sources along with your artifact during the release process, you can add this to your pom.xml file:

<project>
  ...
  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  ...
</project>

Using a profile would probably be a good idea so that building source JARs will only be done by the build running at the CI server level but not on developer machines.

Pascal Thivent
Thanks it's not under my control but will have some words with the architects ;)
Sebastien Lorber
See my edit above :)
Sebastien Lorber