Robert Munteanu
Robert Munteanu

Reputation: 68328

Reusing the same Maven artifact in multiple Jenkins/Hudson jobs

I have set up a build pipeline for a war project using Jenkins and the build-pipeline-plugin . It consists of two actual jobs and an final manual job which deploys on Q&A .

Build pipeline

Each of the jobs is configured to run the same project, activating different profiles. The first job - fast - is the default build, compiling the sources and running unit tests. The second job - browser - runs the Selenium-based browser tests. The third jobs deploys the war file to the Q&A server.

Each job produces a new war file, which bothers me for two reasons:

  1. Even though only the needed goals are executed, e.g. no tests when deploying to Q&A, the build still takes a little too long, as the WAR file has lots of files in it.
  2. We rely on the build number from Jenkins to find out which build the artifact is from. Up till now it was the number from the 'fast' job, but now it is the number from the 'qa-deploy' job.

How can I configure Jenkins and/or Maven to reuse the artifacts from the first job?

I'd prefer a solution which does not change the overall project structure, as our project has a single war module, and splitting it means more work in documenting the changes and it is simpler to have everything in once place.

Upvotes: 4

Views: 2651

Answers (2)

craigforster
craigforster

Reputation: 2669

You could have one project that builds your .war, then copy it from that project into the dependent projects using the Copy Artifact Plugin here.

Upvotes: 2

Torsten
Torsten

Reputation: 6204

I would really like to suggest to split this up into two modules and have the integration test declare a dependency on the war module, which might also contain the deploy action.

This is a much more flexible approach and not that much of an effort.

Upvotes: 1

Related Questions