The files should be fine now except for the engine plugin. Here, the sources.jar has an unneccessary mention of the libs and the binaries have additional files LICENSE.txt and NOTICE.txt. I think that good enough for the next RC.

The changes are not very nice, but I have not found a better way to do it right now.

Peter


On 27.01.2013 14:35, Peter Klügl wrote:
Am 26.01.2013 01:31, schrieb Marshall Schor:
On 1/25/2013 12:59 PM, Peter Klügl wrote:
The binaries and the top level (release) sources look fine now, but I have a
problem with the individual sources.

Can someone give me a hint how to get a customized LICENSE file into the
sources in our build?
Or, a pointer how the LICENSE file is included by the maven-source-plugin.
Anything I did was either ignored or overridden.
Whoops!

I'm thinking more now...  This is the "source-release", right? That
distribution is unlikely to have any content other than Apache Licensed content, since it only includes the sources, right? So it would be incorrect to put in
the LICENSE/NOTICE that goes with the binary builds (which incorporate
dependencies from other places with other LICENSE/NOTICEs perhaps).

So the "standard" LICENSE/NOTICE should be fine here?

Or did I misunderstand something?

I think we have three kinds of files:
1. binary jars of each java project
2. source-release of the top level project
3. sources jars for each java project

I found a not-so-nice workaround for the first one. The second one works already since it has NOTICE/LICENSE files in its root. The archive then only contains these files in its root, but no other NOTICE/LICENSE files in its subfolders, which is OK if all licenses are covered I think. As I understand it, the archive has to contain the icons since its content should be able to be compile to the binaries. The last one is currently the problem. It only contains the default NOTICE/LICENSE files, which seems to be enough. However, the source jars for Eclipse plugins contain also the icons, which use a different license.

Either the icons do not need to be shipped in the sources jars or we have to extend the NOTICE/LICENSE files in these jars. However, I have not found a way to implement the second option.

Is the "source-release" you mentioned also responsible for the the default NOTICE/LICENSE files in the plugin-sources.jar files?

Peter




-Marshall

Peter

On 25.01.2013 16:35, Marshall Schor wrote:
hi - I'm digging into this.

Here's what I've found so far (taking the uimaj-ep-configurator project as a
sample).

The build process chain includes early on the maven-remote-resources plugin. This fetches "standard" things from a standard place for the license and notice
files, puts them into
.../target/maven-shared-archive-resources.

The maven-remote-resources plugin runs "velocity" macro expansion; this allows
inserting at build time extra stuff.  Our Notice template (in
build/trunk/uima-build-resources/src/main/resources/META-INF/NOTICE.vm) is a slight modification from the Apache-wide Notice template, in that it has an
extra bit at the bottom that says, if the maven property
"project.properties.postNoticeText" is set, then insert it. We use this to modify the Notice file for things which originally had IBM copyrights which were
moved to the notice file.

The documentation for the maven-remote-resources plugin says the goal we're using ("process") after running the velocity macro expansion on the resources, they "are injected into the current (in-memory) Maven project, making them
available to the process-resources phase."

What you have to know to have this make sense, is that if you have
(subsequently) an invocation of the maven-resources-plugin with the "resources" goal, running in the "process-resources" phase, then that will copy the files in .../target/maven-shared-archive-resources into the .../target/classes spot - so the eventual JAR plugin will package these (it Jars up everything it finds in
the .../target/classes directory).

So, that's how the files get to the right spot in the Jar.

I think our current build process is lacking the ability to do customization of the LICENSE file prototype. We could modify that, to work just like the Notice file works, to allow extending the standard LICENSE with arbitrary text. We might want to do something different, though, in the case of large modifications to the standard LICENSE / NOTICE files. One thing that would probably work is to use a copy-resources kind of step to replace/override the "standard" LICENSE/NOTICE files in ...target/classes/MEAT-INF with the custom ones from some standard spot (I would suggest using the same spot as you already used).

=====================

I think the reason this hasn't come up before, is that the JARs we built did not (normally) contain other Jars that needed special LICENSE/NOTICE files. The things that did have that need were normally zip and tar assemblies of JARs,
where we used the assembly plugin to do this packaging.

I haven't looked to see what the case is with your packaging - if you're using Assembly, then there are other conventions involving the instructions you were following. My guess is that you're not using assembly, so those instructions
don't help.

=====================

Let me know if you need help in doing something like this...

-Marshall

On 1/25/2013 8:40 AM, Peter Klügl wrote:
On 25.01.2013 14:02, Jörn Kottmann wrote:
On 01/25/2013 01:13 PM, Peter Klügl wrote:
If I undestand that correctly, then I have to remove ANTLR and htmlparser from the NOTICE/LICENSE in the top level project since they are both not part of the source release. Then, I have to add NOTICE/LICENSE files (with ANTLR and htmlparser) to src/main/readme/ in the top level project and to the uimaj-ep-textmarker-engine project since those two binaries will contain
the third party libraries. The other plugins also need their own
NOTICE/LICENSE files in src/main/readme/ since they contain the icons. Is that correct? Is there a shortcut, something that influences maven what to
put in those files, or which file to copy?
+1, sounds good.
Unfortunately, this did not work. I added individual LICENSE/NOTICE files to src/main/readme in uimaj-ep-textmarker-engine but the binary just contains the default files and additionally files with ".txt" extension and the same
content. The -sources jar contains also only the default files.

Any ideas?

Peter



Jörn


Reply via email to