Closed GoogleCodeExporter closed 9 years ago
This is an ongoing issue. We've always made lucene classes available by
instructing users to add the lucene jars to their classpath variable. A longer
term solution would be to use package to manage the dependencies automatically
such as maven.
Do you think it's a big benefit to have this configured in the build file? I
guess it would probably make it easier to design clear error messages.
Original comment by widd...@google.com
on 3 Sep 2010 at 6:58
To be honest, I do not like Maven and I am probably not the only one.
My propsed build file will not change anything for the worse but gives various
options of how people can include their existing Lucene library. A little
sentence in a README or BUILD file could clear those up.
If the user does not use either of this options, everything will be handled
just like before, so no damate is done but replacing the current version with
this version.
Original comment by johann.petrak@gmail.com
on 3 Sep 2010 at 10:55
Is there any chance for this modified buil.xml to get checked in? As it just
gives the user additional options to include the lucene libs in the build it
should not break anything existing.
Original comment by johann.petrak@gmail.com
on 14 Sep 2010 at 9:38
Hi there,
It broke my build because I didn't have the LUCENE_LIBDIR variable set. I fixed
this with export LUCENE_LIBDIR=".../lucene-3.0.1/", but still the benefit of
setting this over adding the Lucene jars to your classpath doesn't seem that
big (for setting the classpath I have to add two jars, not one directory,
that's all). I don't think it's worth breaking everyone's existing build
process for this, at least.
I may be using the new build files slightly wrongly though - if you can
document the new process so that the integration with the old one is more
seamless then we should consider going ahead.
Thanks,
Dominic
Original comment by widd...@google.com
on 14 Sep 2010 at 3:32
Ahh, you are right, I accidently left the part in the build.xml file that uses
"./lucenelib" as a fallback if neither the environment variable LUCENE_LIBDIR
nor the property lucenelibdir is set. Since that directory does not exist in
your case, the build will fail.
My suggestion would be to either add an (empty) "./lib" directory and use that
as a fallback instead of ./lucenelib (having a lib dir seems to be somewhat a
convention for java projects with an ant buildfile ... the user can copy all
the jars the project depends on there or the project can include the correct
jars by default there).
I would be interested what you mean by "adding the Lucene jars to your
classpath"? Do you manually edit the build.xml file?
My interest is really to make this build.xml file work for as many users as
possible as smoothly as possible.
Original comment by johann.petrak@gmail.com
on 14 Sep 2010 at 6:48
Which line should be removed from the build file? I still haven't got this to
work without setting LUCENE_LIBDIR explicitly.
So if I do:
$ export LUCENE_LIBDIR=/home/widdows/software/lucene/lucene-3.0.1/
$ ant
my build works, and doesn't work without this.
"adding the Lucene jars to your classpath" literally means setting your
CLASSPATH environment variable as Java's main way of finding resources.
Nowadays I've seen quite a few docs saying "java -cp ..." so I wonder if
hard-coding your CLASSPATH as an environment variable in your shell setup is
considered brittle. But I'd like to keep supporting this mode if possible.
Also to compile the tests and extensions you need ParallelColt and junit, so in
my bash setup I have
CLASSPATH=$CLASSPATH:/home/widdows/software/lucene/lucene-3.0.1/lucene-demos-3.0
.1.jar
CLASSPATH=$CLASSPATH:/home/widdows/software/lucene/lucene-3.0.1/lucene-core-3.0.
1.jar
CLASSPATH=$CLASSPATH:/home/widdows/software/junit/junit4.4/junit-4.4.jar
CLASSPATH=$CLASSPATH:/home/widdows/software/ParallelColt/bin/
I'd rather not have to set a PARALLEL_COLT_LIBDIR and JUNIT_LIBDIR, the
possibility for environment variable names not lining up with those expected by
the build file looks like it would increase the number of things the user has
to get just right.
Please let me know if there's a way of doing this so that the ant build works
fine if the dependencies are already in the CLASSPATH variable.
Sorry again for the delayed responses.
Original comment by widd...@google.com
on 20 Sep 2010 at 5:45
I am attaching a new version of build.xml that should cover all ways how one
could want to configure this:
* If you do nothing, this should this time really work as the original and
should use whatever is in CLASSPATH if that one is set
* if you want to use a specific environment variable for the additional libs
needed by the semanticvectors package, you can set SEMVECT_LIBDIR to a
directory containing those jars
* if you want to set it in build.properties, create a build.properties file in
the same directory as build.xml and add a line "libdir=<thepathtothelibdir>"
* if you just add a directory lib to the current directory and place the jars
there, they will automatically be used.
These options are also mentioned in a comment in the beginning of the build.xml
file.
Original comment by johann.petrak@gmail.com
on 20 Sep 2010 at 7:27
Attachments:
Thanks, I just submitted the build file, works for me so far.
Would you be willing to add instructions to the InstallationInstructions page
on the Wiki? I can make you a project developer for that.
Original comment by widd...@google.com
on 21 Sep 2010 at 4:01
Sure, i'd be happy to do that.
Original comment by johann.petrak@gmail.com
on 21 Sep 2010 at 4:31
Fixed and documented now.
Original comment by johann.petrak@gmail.com
on 28 Oct 2010 at 8:01
Many many thanks.
Original comment by widd...@google.com
on 28 Oct 2010 at 8:13
Original issue reported on code.google.com by
johann.petrak@gmail.com
on 3 Sep 2010 at 8:48Attachments: