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]