Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strip version number from dependency based on group ID in maven

Tags:

java

maven

I have a project that has 3rd party dependencies, as well as dependencies on internal projects. I need to strip the version numbers from the dependent artifacts that are developed in-house.

For example: spring-2.5.6.jar should be in the final output as spring-2.5.6.jar but MyInternalProject-1.0.17.jar needs to be changed to MyInternalProject.jar.

I can identify the internal dependencies easily enough by their group ID (they are all something like com.mycompany.*). The maven-dependency-plugin has a stripVersion option, but it does not seem to be selective enough. Is there a way to do this, short of explicitly naming each dependency and what their final name should be?


Phrased another way:

I would like to have different outputFileNameMappings for the maven-assembly-plugin for artifacts based on group ID. Is there a way to do this?

like image 915
FrustratedWithFormsDesigner Avatar asked Oct 23 '25 08:10

FrustratedWithFormsDesigner


1 Answers

I think you can using the following recipe:

First, in your aggregator pom use the dependency:copy-dependencies goal to copy your jars to some intermediate location. You will need two executions, one with <stripVersion>true</stripVersion> for your internal dependencies; and one with <stripVersion>false</stripVersion> for 3rd party libraries. You may include/exclude artifacts based on GroupId, see http://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html for full details.

Then it should be a simple task to build a .zip using the maven-assembly-plugin!

like image 100
Gyro Gearless Avatar answered Oct 24 '25 21:10

Gyro Gearless



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!