[ANN] Apache Maven Assembly Plugin 3.3.0 Released

2020-04-30 Thread Robert Scholte
The Apache Maven team is pleased to announce the release of the Apache Maven 
Assembly Plugin, version 3.3.0

The Assembly Plugin for Maven enables developers to combine project output into 
a single distributable archive that also contains dependencies, modules, site 
documentation, and other files.

https://maven.apache.org/plugins/maven-assembly-plugin/

You should specify the version in your project's plugin configuration:


org.apache.maven.plugins
maven-assembly-plugin
3.3.0


You can download the appropriate sources etc. from the download page:

https://maven.apache.org/plugins/maven-assembly-plugin/download.cgi


Release Notes - Maven Assembly Plugin - Version 3.3.0

** Bug

    * [MASSEMBLY-879] - useDefaultExcludes has no effect in dependencySet/unpack
    * [MASSEMBLY-920] - ContainerDescriptorHandler for MetaInf-Services breaks 
folder structure
    * [MASSEMBLY-932] - resource filtering skipped for resources in the current 
project

** New Feature
    * [MASSEMBLY-922] - allow to override UID/GID and user name and group name 
for files stored in TAR (and other formats that store UID/GID)
    * [MASSEMBLY-927] - Support for properties mapping on executions of 
maven-assembly-plugin
    * [MASSEMBLY-934] - Support concatenation of files

** Improvement
    * [MASSEMBLY-765] - add property groupIdPath
    * [MASSEMBLY-849] - Add nonFilteredFileExtensions to avoid filtering of 
binary files
    * [MASSEMBLY-933] - make build Reproducible

** Dependency upgrade

    * [MASSEMBLY-924] - Upgrade commons-compress to 1.19



Enjoy,

-The Apache Maven team


[RESULT] [VOTE] Release Apache Maven Assembly Plugin version 3.3.0

2020-04-30 Thread Robert Scholte
Hi,

The vote has passed with the following result:

+1 : Robert Scholte, Hervé BOUTEMY, Karl Heinz Marbaise, Eric Lilja

PMC quorum: reached

I will promote the artifacts to the central repo.

On 30-4-2020 20:24:29, Eric Lilja  wrote:
+1 non-binding

Nice to see a release of this plugin!

- Eric Lilja

On Thu, Apr 30, 2020 at 8:09 PM Karl Heinz Marbaise
wrote:

> Hi,
>
> +1 from me
>
>
> Kind regards
> Karl Heinz Marbaise
> On 27.04.20 20:19, Robert Scholte wrote:
> > Hi,
> >
> > We solved 10 issues:
> >
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12317220&version=12344774&styleName=Text
> >
> > There are still a couple of issues left in JIRA:
> >
> https://issues.apache.org/jira/issues/?jql=project%20%3D%2012317220%20AND%20status%20%3D%20Open%20ORDER%20BY%20key%20DESC%2C%20priority%20DESC
> >
> > Staging repo:
> > https://repository.apache.org/content/repositories/maven-1568/
> >
> https://repository.apache.org/content/repositories/maven-1568/org/apache/maven/plugins/maven-assembly-plugin/3.3.0/maven-assembly-plugin-3.3.0-source-release.zip
> >
> > Source release checksum(s):
> >
> maven-assembly-plugin-3.3.0-source-release.zip sha512: 
> d41ba25dd35dea5b1b690f6cb84e4e30c5466c0e6fb3d5d98305daf70cb1ba9468c0ba2181afb8fa5f6d41c735f4f1d9d462f58eb320df0c85d57dbefa70b15a
> >
> > Staging site:
> > https://maven.apache.org/plugins-archives/maven-assembly-plugin-LATEST/
> >
> > Guide to testing staged releases:
> > https://maven.apache.org/guides/development/guide-testing-releases.html
> >
> > Vote open for at least 72 hours.
> >
> > [ ] +1
> > [ ] +0
> > [ ] -1
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


Re: [VOTE] Release Apache Maven Assembly Plugin version 3.3.0

2020-04-30 Thread Eric Lilja
+1 non-binding

Nice to see a release of this plugin!

- Eric Lilja

On Thu, Apr 30, 2020 at 8:09 PM Karl Heinz Marbaise 
wrote:

> Hi,
>
> +1 from me
>
>
> Kind regards
> Karl Heinz Marbaise
> On 27.04.20 20:19, Robert Scholte wrote:
> > Hi,
> >
> > We solved 10 issues:
> >
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12317220&version=12344774&styleName=Text
> >
> > There are still a couple of issues left in JIRA:
> >
> https://issues.apache.org/jira/issues/?jql=project%20%3D%2012317220%20AND%20status%20%3D%20Open%20ORDER%20BY%20key%20DESC%2C%20priority%20DESC
> >
> > Staging repo:
> > https://repository.apache.org/content/repositories/maven-1568/
> >
> https://repository.apache.org/content/repositories/maven-1568/org/apache/maven/plugins/maven-assembly-plugin/3.3.0/maven-assembly-plugin-3.3.0-source-release.zip
> >
> > Source release checksum(s):
> >
> maven-assembly-plugin-3.3.0-source-release.zip sha512: 
> d41ba25dd35dea5b1b690f6cb84e4e30c5466c0e6fb3d5d98305daf70cb1ba9468c0ba2181afb8fa5f6d41c735f4f1d9d462f58eb320df0c85d57dbefa70b15a
> >
> > Staging site:
> > https://maven.apache.org/plugins-archives/maven-assembly-plugin-LATEST/
> >
> > Guide to testing staged releases:
> > https://maven.apache.org/guides/development/guide-testing-releases.html
> >
> > Vote open for at least 72 hours.
> >
> > [ ] +1
> > [ ] +0
> > [ ] -1
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


Re: [VOTE] Release Apache Maven Assembly Plugin version 3.3.0

2020-04-30 Thread Karl Heinz Marbaise

Hi,

+1 from me


Kind regards
Karl Heinz Marbaise
On 27.04.20 20:19, Robert Scholte wrote:

Hi,

We solved 10 issues:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12317220&version=12344774&styleName=Text

There are still a couple of issues left in JIRA:
https://issues.apache.org/jira/issues/?jql=project%20%3D%2012317220%20AND%20status%20%3D%20Open%20ORDER%20BY%20key%20DESC%2C%20priority%20DESC

Staging repo:
https://repository.apache.org/content/repositories/maven-1568/
https://repository.apache.org/content/repositories/maven-1568/org/apache/maven/plugins/maven-assembly-plugin/3.3.0/maven-assembly-plugin-3.3.0-source-release.zip

Source release checksum(s):
maven-assembly-plugin-3.3.0-source-release.zip sha512: 
d41ba25dd35dea5b1b690f6cb84e4e30c5466c0e6fb3d5d98305daf70cb1ba9468c0ba2181afb8fa5f6d41c735f4f1d9d462f58eb320df0c85d57dbefa70b15a

Staging site:
https://maven.apache.org/plugins-archives/maven-assembly-plugin-LATEST/

Guide to testing staged releases:
https://maven.apache.org/guides/development/guide-testing-releases.html

Vote open for at least 72 hours.

[ ] +1
[ ] +0
[ ] -1


-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: Maven Filtering Plugin should avoid overwriting even when filtering

2020-04-30 Thread Robert Scholte
The main different is the moment you know you have to write the file.
If there's zero interpolation/filtering, then there's no need to write the file.
As soon as you detect interpolation/filtering you can start overwriting the 
original file.

The challenge is probably to fit this concept in the current codebase.
However,the result would a much more elegant and efficient result compared to 
the temporary created files.

Robert
 
On 30-4-2020 09:54:55, Rob Oxspring  wrote:

> On 30 Apr 2020, at 07:38, Robert Scholte wrote:
>
> I prefer to see an in memory solution.

Well if it’s reasonable to assume that filtered files are always small then we 
could use replace the temporary file in my solution with an in memory buffer... 
but I’m not sure that’s what you’re shooting at?

> Key should be to detect if filtering is applied, which is done in the 
> MultiDelimiterInterpolatorFilterReaderLineEnding[1]
> Once a value has been interpolated, you must rewrite the file, otherwise you 
> shouldn't.

Again though, this appears to miss the subtlety: “if filtering is applied” is 
insufficient, the condition needs to be “if filtering is applied with different 
results than the previous run”. This requires either attempting to store some 
state between runs.

We could scan the source file for filtered values and store just that state (or 
checksum) in a file between runs. The cost would be an extra read of the source 
file + state comparison + writing out the state of each filtering. Is this what 
you’re thinking?

The alternative is to just use the target file as the (not minimal) state. We 
could read and filter the source file once, while reading and comparing with 
the target file in parallel. As soon as the contents start to differ then 
truncate the target file and append the rest of the filtered source to it. The 
cost here would be an extra full read of the target. Is this what you’re after?

Otherwise I’m at a loss to understand what would be acceptable.

Thanks!

Rob

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: source directory layout for multirelease jars

2020-04-30 Thread Robert Scholte
Hi Benjamin,

You're confusing me

"Sadly, you cannot just add executions to the maven compiler plugin."
Why not? The design of the pom contains support of multiple executions within 
the same plugin

"Almost no IDE supports it, ..."
I think they all do. And even if they don't, they should. I consider an IDE as 
a wrapper around Maven, so it should support this basic feature

"... and when I asked about multiple executions
in the maven compiler plugin on this list I recevied only one reply
that this is not an intended way of using this plugin (although I was
using it for annotation processing with
useIncrementalCompilation=false)."

I don't recognize this question. And the answer looks incorrect to me.

That said: if you just want a META-INF/versions/9/module-info.class, you can 
already do that (for a long time).
https://github.com/apache/maven-compiler-plugin/tree/master/src/it/multirelease-patterns
However, there is no one ideal pattern, you have to pick one,

Robert 




On 30-4-2020 08:49:02, Benjamin Marwell  wrote:
Hi,

to make the story a bit shorter - for most libraries it would be
sufficient to add a way to include a module descriptor at
"META-INF/versions/9/module-info.class" while still staying at java 8.
Most libraries will stick to java 8 or even 7 for quite a time.

Sadly, you cannot just add executions to the maven compiler plugin.
Almost no IDE supports it, and when I asked about multiple executions
in the maven compiler plugin on this list I recevied only one reply
that this is not an intended way of using this plugin (although I was
using it for annotation processing with
useIncrementalCompilation=false).

I know there is the moditect plugin for such cases, but it doesn't
play along nicely with the bundle-plugin and hasn't seen much progress
lately as far as I can tell.

That said, adding such a module descriptor would be a nice first goal
without using executions.

Of course this will all become obsolete as soon as everyone uses java 9+.

Am Sa., 25. Apr. 2020 um 21:20 Uhr schrieb Robert Scholte
:
>
> I'm afraid this will be long story, but this might be the moment to share the 
> details.
>
> https://maven.apache.org/plugins/maven-compiler-plugin/multirelease.html 
> describes already several topics:
>
> - why MultiRelease Jars
> - how to build them? There are several patterns, each with its pro's and 
> con's.
>
> But it doesn't explain the technical problems, so I guess we need to explain 
> it a bit better.
> I will also take the time to describes things that you might already know.
>
> So you want to build a jar? You take the minimum pom (modelVersion + groupId 
> + artifactId + version)
> and you can set the packaging to jar (or omit it, as it is the default value).
> You will call "package", which matches a phase of the default lifecycle.
> Maven must first figure out the matching lifecycle, by looping over all the 
> available.[1]
> It will pick up all mapped Lifecycle components and will search in its 
> phases. The result will be the "default" Lifecycle.
> Based on this Maven will look for "jar" named LifecycleMapper and the 
> configuration for the "default" lifecycle [2]
>
> Now it knows which plugins, versions and goals must be called. (it is 
> possible to call multiple calls within one phase)
> There is no explicit executionId (I'm actually not sure if you can use it 
> here, I think so), so default- will be used as executionId.
> You can see this in the console output of Maven. You can use this executionId 
> for explicit configuration.
> Keep in mind that plugins are very isolated.
> They have their own classloader during execution.
> They don't share configuration or instances with other plugins(*), you could 
> treat the pom as the shared configuration.
>
> For the creation of a Multirelease jar we have sepatare challenges for the 
> following phases: compile, test and packaging.
> The simplest of the three is probably packaging: you need to ensure that the 
> manifest has the attribute Multi-Release: true
> Depending on in which folder/package structure the classes are available you 
> need to build up the right structure, putting classes in their matching 
> META-INF/versions/${release}/ -folder
>
>
> Now the compiling part:
> My first approach is close to what everybody wants: no additional 
> configuration in the pom (the minimal pom should be enough), use 
> src/main/java/ as predefined folder template.
> I did a POC, and it looks promising: the plugin would loop over the folders, 
> extracted the release value and executed javac a couple of times, but the 
> classes in the matching directory.
> Well, I was wrong: tests started to fail. I discovered that several 
> parameters should only be used for a subset of a javac calls, or just exactly 
> for one. Especially the includes/excludes caused trouble.
> I could try to find a configuration for includes/excludes per release value 
> within the same execution, but I knew there were other properties needing 
> simila

Re: Maven Filtering Plugin should avoid overwriting even when filtering

2020-04-30 Thread Rob Oxspring


> On 30 Apr 2020, at 07:38, Robert Scholte  wrote:
> 
> I prefer to see an in memory solution.

Well if it’s reasonable to assume that filtered files are always small then we 
could use replace the temporary file in my solution with an in memory buffer... 
but I’m not sure that’s what you’re shooting at?

> Key should be to detect if filtering is applied, which is done in the 
> MultiDelimiterInterpolatorFilterReaderLineEnding[1]
> Once a value has been interpolated, you must rewrite the file, otherwise you 
> shouldn't.

Again though, this appears to miss the subtlety: “if filtering is applied” is 
insufficient, the condition needs to be “if filtering is applied with different 
results than the previous run”. This requires either attempting to store some 
state between runs. 

We could scan the source file for filtered values and store just that state (or 
checksum) in a file between runs. The cost would be an extra read of the source 
file + state comparison + writing out the state of each filtering. Is this what 
you’re thinking?

The alternative is to just use the target file as the (not minimal) state. We 
could read and filter the source file once, while reading and comparing with 
the target file in parallel. As soon as the contents start to differ then 
truncate the target file and append the rest of the filtered source to it. The 
cost here would be an extra full read of the target. Is this what you’re after?

Otherwise I’m at a loss to understand what would be acceptable. 

Thanks!

Rob

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org