How to deploy the sources file with the jar using deploy:deploy-file

Yoztastic picture Yoztastic · Feb 20, 2012 · Viewed 15.2k times · Source

I have the following plugins for creating a -sources.jar and deploying a specific named jar to a repository.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <version>${project.version}-r${buildNumber}</version>
        <classifier>${env}</classifier>
        <packaging>jar</packaging>
        <file>${project.build.directory}/${project.build.finalName}.jar</file>
        <url>${artifactory.url}/libs-release-local</url>
        <repositoryId>artifactory.digiterre.com</repositoryId>
        <pomFile>${project.basedir}/pom.xml</pomFile>
    </configuration>
</plugin>

I wish to deploy the *-sources.jar at the same time. I have tried adding a second file entry and even a second deploy plugin. I seem to get one or other file deployed.

Is it possible to deploy both in one pass using deploy:deploy-file or will I have to set up a second team city build just to deploy the sources?

Answer

Andrew Logvinov picture Andrew Logvinov · Feb 20, 2012

When you use maven-source-plugin, the generated jar will automatically attach to project artifact (default setting for this parameter is 'true') and if you execute deploy it will be deployed along with it. Alas, no need for separate configuration of deploy plugin.

Unfortunately, you cannot add classifier (${env} in your case) to sources jar. That is why I'd use the following configuration:

...
<artifactId>com.pie.mash.repo.mince-${env}</artifactId>
<version>1.18-r${buildNumber}</version>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <version>2.1.2</version>
      <executions>
        <execution>
          <goals>
            <goal>jar-no-fork</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Also, I've found this question on SO. You can use the workaround suggested there.