Support for unversioned third party JARs
----------------------------------------

                 Key: MNG-2572
                 URL: http://jira.codehaus.org/browse/MNG-2572
             Project: Maven 2
          Issue Type: New Feature
          Components: Dependencies
    Affects Versions: 2.0.4
            Reporter: Markus KARG


Problem:
Maven's dependency management is great, but it lacks "real" support for 
unversioned, third party JARs.
A Maven project declared dependencies on "foreign" JARs by adding a dependency 
to the own pom.xml. That dependency declaration comprises of groupId, 
atifactId, and version. In turn, Maven builds the actually used JAR name by 
concatenating the version to the JAR's actual name. This is great if the 
referenced JAR is built with Maven, but it is a problem whenever that other JAR 
is not built by Maven.

Example:
You project needs to load some classes of FOO.jar. FOO.jar itself is a closed 
source library that can be downloaded on the web, but it must not be 
repackaged. Your own project will never succeed using it, since FOO.jar is 
never called FOO-1.0.0.jar but always only FOO-1.0.0.jar. Since e. g. 
licenceing rules restricts renaming and repackaging of FOO.jar, you cannot use 
that JAR in your project and in turn, you even cannot use Maven to build your 
own project.

Cause:
This is caused by Maven expecting the name of a referenced binary always 
containing the version.

Solution:
Maven should allow pom.xml to specificy the actual JAR name, e. g. by adding a 
new tag named <jar-name> that is parallel to <version>, <artifactId> etc. Once 
that tag is provided, it doesn't build the JAR name by adding the version but 
it just uses the provided JAR name. This implies the following two results:
(a) When <jar-name>FOO</jar-name> is provided in the section describing the own 
project, then "mvn package" will create FOO.jar instead of 
ArtifactId-VersionId.jar.
(b) When <jar-name>FOO</jar-name> is provided within a <dependency> section, 
then "mvn package" will add FOO.jar to Class-Path: instead of 
ArtifactId-VersionId.jar, and the dependency loader will try to download 
FOO.jar instead of ArtifactId-VersionId.jar.

Notes:
This new feature is optional. It is not intended to replace the dependency 
mechanism as it currently exists, but it is only an additional option that can 
be used whenever it is necessary to have the JAR name explicitely told.
The repository will still be organized and scanned using the information found 
in groupId, artifactId and version. This mechanism is not touched. Only the 
JAR's actual name is touched by this change.

Side Effects:
There should be no side effects besides solving the told problems, since the 
original mechanism is not changed. The new feature is completely optional.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to