Karl, I'd like users of my JAR to have to install just this one JAR file (so no
un-archiving required), and not have to ask them to also install the Maven
package to their classpaths.

To do this I'm compiling parts of Maven into my JAR, as allowed by the Apache
Licence, eliminating the commons-lang3 dependencies so I don't have to also
compile that in.

It's great that you're currently working on dependency reduction.

Mark

On 31/12/2019 23:45, Karl Heinz Marbaise wrote:
> hi Mark,
>
> On 31.12.19 12:54, Mark James wrote:
>> Karl, I'd like to embed Maven version string comparison in my JAR so my
>> users don't have to install both Maven and Commons-Lang.
>
>
> Users don't have to install Maven and commons-lang3. They will get it
> with their installation package (Download from maven.apache.org) in the
> lib directory...
>
> I'm currently checking and working on removing dependencies which are
> not really needed[1].
>
> Maybe you can explain more in details what you are trying to do or
> helping (of course appreciated)...
>
> cause at the moment I don't understand which way you are walking?
>
>
> Maybe related to the post we have a misunderstanding ?
>
> Kind regards
> Karl Heinz Marbaise
>
> [1]: https://issues.apache.org/jira/browse/MNG-6829
>
>
>> But I'd like to
>> do this in a way that my JAR isn't an order-of-magnitude bigger.
>>
>> I've found I can embed just
>>
>> org.apache.maven.artifact
>> org.apache.maven.artifact.handler
>> org.apache.maven.artifact.metadata
>> org.apache.maven.artifact.repository
>> org.apache.maven.artifact.repository.layout
>> org.apache.maven.artifact.repository.metadata
>> org.apache.maven.artifact.resolver
>> org.apache.maven.artifact.resolver.filter
>> org.apache.maven.artifact.versioning
>> org.apache.maven.repository
>> org.apache.maven.repository.legacy.metadata
>>
>> as long as I make the small mods I posted to remove the Commons-Lang
>> dependency.
>>
>> Should I keep these mods as a custom fork, or would they be a worthwhile
>> patch to the distribution?
>>
>> Mark
>>
>> On 26/11/2019 05:01, Karl Heinz Marbaise wrote:
>>> Hi Mark,
>>>
>>> can you tell us on which part of Maven you are referencing? Or do you
>>> reference your own project?
>>>
>>> Maven Core ? a particular plugin ?
>>>
>>> Kind regards
>>> Karl Heinz Marbaise
>>>
>>> On 25.11.19 03:08, Mark James wrote:
>>>> Hello,
>>>>
>>>> Is there any chance of removing the dependency of Artifact on
>>>> Commons-Lang?
>>>> Something nine times bigger is pulled in just to reference the String
>>>> utility
>>>> functions isNotEmpty, notBlank, and isNumeric.
>>>>
>>>> I understand the advantages of libraries, but this comes at more of a
>>>> cost in
>>>> Java because common Java libraries are less likely to be on the
>>>> system than
>>>> native libraries, and so must be either specified as a dependency
>>>> (that must be
>>>> downloaded and added to build and class paths), distributed with the
>>>> using JAR
>>>> (requiring an installation expansion), or embedded into using JARs
>>>> (defeating
>>>> the space-saving advantage). Semi-automated dependency resolution
>>>> probably makes
>>>> this easier, but many such as myself aren't familiar with it.
>>>>
>>>> I'd like to be able to distribute my package as a single JAR, with
>>>> Artifact but
>>>> not Commons-Lang embedded. But this currently needs the following
>>>> changes:
>>>>
>>>> 1. Replacing StringUtils.isNotEmpty in DefaultArtifact with a not-null +
>>>> positive-length test.
>>>>
>>>> 2. In ArtifactUtils.notBlank, replacing
>>>>
>>>>          Validate.notBlank( str, message );
>>>>
>>>>      with
>>>>
>>>>          for (int i=0; i < str.length(); i++) if
>>>>          (!Character.isWhitespace(str.charAt(i))) return;
>>>>          throw new IllegalArgumentException(message);
>>>>
>>>>      or, using Java 8 code,
>>>>
>>>>          if (str.chars().allMatch(Character::isWhitespace)) throw new
>>>>          IllegalArgumentException(message);
>>>>
>>>> and 3. Copying StringUtils.isNumeric as DefaultArtifact.isDigits.
>>>>
>>>> It would be nice if Java had a directive to do such copies at
>>>> build-time,
>>>> removing run-time dependencies while preventing code duplication.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to