tags:

views:

220

answers:

2

I am installing to Maven repository our internal files using mvn install:install command. All Jars installed in such way have version name added automatically as a suffix. Since we have many batch scripts with the Jars names it is very inconvenient for us. How this auto-renaming can be switched off?

+5  A: 

You can't. Dependency resolution in Maven works because Maven has conventions and the naming of artifacts is one of them. So you can't turn off the way maven install artifacts (and you actually don't want to).

The common way to handle scripts (bat/sh) is to put them in your source tree (e.g. in src/main/bin) and to create a distribution of your project with the assembly plugin. When building your assembly, you can rename artifacts, filter distribution files, etc. That would be the right place to do such kind of things.

Pascal Thivent
+3  A: 

Hi Sergey, it's tempting to want to remove the version number, but I'd recommend keeping it on if at all possible.

Instead of removing the version numbers, maybe you could use Maven's resource filtering capability to manage your batch scripts? Maven can manage your batch scripts by replacing placeholders such as ${project.version} inside the bat script with the current version number from the pom.xml. That way you can ensure that the batch script is running the correct (expected) version of the code.

You could probably force maven to deploy a jar without a version, but if you do so, you lose some of the main benefits of having Maven manage your build in the first place, imo. For example, just yesterday I was asked to maintain a java project not managed by maven with a bunch of non-versioned jar files inside a lib directory. There's no way to know where any of the jars came from.

It might be a little bit of a headache up front, but if you're using maven, you might as well jump in 100% (again, from my experience).

Dave Paroulek
Scripts (bat/sh) are usually not resources.
Pascal Thivent
@Pascal Thivent, why can't they be? I use the technique where I put my scripts under a dir names scripts. Then I can configure Maven resource filter to filter the files inside the scripts directory. It works great.
Dave Paroulek
Don't they end up in target/classes (which may not be desired)?
Pascal Thivent