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