From 0c09bfcba4eca18e1c44bcdd0c906dc301db0643 Mon Sep 17 00:00:00 2001 From: Steven Rowe Date: Sun, 8 Apr 2012 04:07:42 +0000 Subject: [PATCH] LUCENE-3964: Enable Maven artifact staging git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1310949 13f79535-47bb-0310-9956-ffa450edef68 --- dev-tools/scripts/crawl.maven.release.dist.sh | 29 +++++ .../scripts/write.stage.maven.build.xml.pl | 121 ++++++++++++++++++ lucene/CHANGES.txt | 6 + lucene/common-build.xml | 19 +++ 4 files changed, 175 insertions(+) create mode 100644 dev-tools/scripts/crawl.maven.release.dist.sh create mode 100644 dev-tools/scripts/write.stage.maven.build.xml.pl diff --git a/dev-tools/scripts/crawl.maven.release.dist.sh b/dev-tools/scripts/crawl.maven.release.dist.sh new file mode 100644 index 00000000000..5eabd2b595f --- /dev/null +++ b/dev-tools/scripts/crawl.maven.release.dist.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Crawls all Maven release distribution artifacts at the given URL +# and downloads them to the current directory. +# +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +if [ -z "$1" ] ; then + echo "Usage: $0 " + echo "Example: $0 'http://people.apache.org/~rmuir/staging_area/lucene-solr-3.6RC0-rev1309642/solr/maven/'" + exit 1; +fi + +wget -r -np -l 0 -nH -erobots=off --cut-dirs=8 --reject="*.md5,*.sha1,maven-metadata.xml*,index.html*" "$1/" \ No newline at end of file diff --git a/dev-tools/scripts/write.stage.maven.build.xml.pl b/dev-tools/scripts/write.stage.maven.build.xml.pl new file mode 100644 index 00000000000..5769cc8e5e7 --- /dev/null +++ b/dev-tools/scripts/write.stage.maven.build.xml.pl @@ -0,0 +1,121 @@ +#!/usr/bin/perl +# +# This script is called from lucene/build.xml and solr/build.xml, by target +# stage-maven-artifacts, to populate an internal Maven repository created by +# generate-maven-artifacts with Ant build files, one per POM. The +# stage-maven target is then called from each of these Ant build files. +# +# Command line parameters: +# +# 1. The directory in which to find Maven distribution POMs, +# jars, wars, and signatures. +# 2. The pathname of the Ant build script to be built. +# 3. The pathname of common-build.xml, which will be imported +# in the Ant build script to be built. +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +use strict; +use warnings; +use File::Basename; +use File::Find; +use File::Path qw(make_path); + +my $num_artifacts = 0; +my $maven_dist_dir = $ARGV[0]; +my $output_build_xml_file = $ARGV[1]; +my $common_build_xml = $ARGV[2]; +if ($^O eq 'cygwin') { # Make sure Cygwin Perl can find the output path + $output_build_xml_file = `cygpath -u "$output_build_xml_file"`; + $output_build_xml_file =~ s/\s+$//; # Trim trailing whitespace + $output_build_xml_file =~ s/^\s+//; # Trim leading whitespace +} +my ($output_file, $output_dir) = fileparse($output_build_xml_file); +make_path($output_dir); +open my $output_build_xml, ">$output_build_xml_file" + or die "ERROR opening '$ARGV[1]' for writing: $!"; + +print $output_build_xml qq! + + + + + +!; + +sub wanted; + +File::Find::find({follow => 1, wanted => \&wanted}, $maven_dist_dir); + +print $output_build_xml q! + + + +!; + +close $output_build_xml; + +print "Wrote '$output_build_xml_file' to stage $num_artifacts Maven artifacts.\n"; +exit; + +sub wanted { + /^(.*)\.pom\z/s && do { + my $pom_dir = $File::Find::dir; + if ($^O eq 'cygwin') { # Output windows-style paths on Windows + $pom_dir = `cygpath -w "$pom_dir"`; + $pom_dir =~ s/\s+$//; # Trim trailing whitespace + $pom_dir =~ s/^\s+//; # Trim leading whitespace + } + my $basefile = $_; + $basefile =~ s/\.pom\z//; + my $basepath = "$pom_dir/$basefile"; + my $pom_file = "$basepath.pom"; + my $jar_file = "$basepath.jar"; + my $war_file = "$basepath.war"; + + if (-f $war_file) { + print $output_build_xml qq! + + + + + + \n!; + } elsif (-f $jar_file) { + print $output_build_xml qq! + + + + + + + + + + \n!; + } else { + print $output_build_xml qq! + + + + + \n!; + } + + ++$num_artifacts; + }; +} diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index d30c96d2fae..224c9992dda 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -721,6 +721,12 @@ Documentation * LUCENE-3958: Javadocs corrections for IndexWriter. (Iulius Curt via Robert Muir) +Build + +* LUCENE-3964: Added target stage-maven-artifacts, which stages + Maven release artifacts to a Maven staging repository in preparation + for release. (Steve Rowe) + ======================= Lucene 3.6.0 ======================= Changes in backwards compatibility policy diff --git a/lucene/common-build.xml b/lucene/common-build.xml index b0651ae1fc7..6e9623b2e6a 100644 --- a/lucene/common-build.xml +++ b/lucene/common-build.xml @@ -907,6 +907,25 @@ + + + + + + + + + + + + + Invoking target stage-maven in ${output.build.xml} now... + + + + + +