package Java::JCR::Build; use base 'Module::Build'; use File::Path; use File::Spec; my $maven_repo = 'http://www.ibiblio.org/maven'; my %jars = ( 'jackrabbit-1.0.jar' => "$maven_repo/org.apache.jackrabbit/jars/jackrabbit-core-1.0.jar", 'jcr-1.0.jar' => 'http://www.day.com/maven/jsr170/jars/jcr-1.0.jar', 'slf4j-jdk14-1.0.1.jar' => "$maven_repo/org.slf4j/jars/slf4j-jdk14-1.0.1.jar", 'commons-collections-3.1.jar' => "$maven_repo/commons-collections/jars/commons-collections-3.1.jar", 'xercesImpl-2.6.2.jar' => "$maven_repo/xerces/jars/xercesImpl-2.6.2.jar", 'xmlParserApis-2.0.2.jar' => "$maven_repo/xerces/jars/xmlParserAPIs-2.0.2.jar", 'derby-10.1.1.10.jar' => "$maven_repo/org.apache.derby/jars/derby-10.1.1.0.jar", 'concurrent-1.3.4.jar' => "$maven_repo/concurrent/jars/concurrent-1.3.4.jar", 'lucene-1.4.3.jar' => "$maven_repo/lucene/jars/lucene-1.4.3.jar", ); sub ACTION_get_jars { my $self = shift; eval "require LWP::UserAgent" or die "Failed to load LWP::UserAgent: $@"; my $mirror_dir = File::Spec->catdir($self->blib, 'lib', 'Java', 'JCR'); mkpath( $mirror_dir, 1); my $ua = LWP::UserAgent->new; print "Checking for needed jar files...\n"; while (my ($file, $url) = each %jars) { my $path = File::Spec->catfile($mirror_dir, $file); $self->add_to_cleanup($path); next if -f $path; my $response = $ua->mirror($url, $path); if ($response->is_success) { print "Mirroring $url to $file.\n"; } elsif ($response->is_error) { die "An error occurred fetching $url to $file: ", $response->status_line, "\n"; } } } # my @java_src = qw( # src/org/perl/java/jcr/PerlSimpleCredentials.java # ); # # sub ACTION_code_java { # my $self = shift; # # my $class_dir = File::Spec->catdir($self->blib, 'target'); # my $jar_file = File::Spec->catfile( # $self->blib, 'lib', 'Java', 'JCR', 'perl-jcr.jar'); # # $self->do_system('javac', '-cp', $ENV{'CLASSPATH'}, '-d', $class_dir, @java_src) # or die "Failed to build Java classes.\n"; # $self->do_system('jar', 'cf', $jar_file, '-C', $class_dir, '*') # or die "Failed to build Jar file.\n"; # } sub ACTION_code { my $self = shift; $self->ACTION_get_jars; # $self->ACTION_code_java; $self->SUPER::ACTION_code; } 1