Merge "Move Maven support to //tools/maven"

This commit is contained in:
Dave Borowitz 2013-07-30 17:15:20 +00:00 committed by Gerrit Code Review
commit bece831d3c
9 changed files with 147 additions and 166 deletions

View File

@ -1,7 +1,7 @@
[alias]
api = //:api
api_deploy = //:api_deploy
api_install = //:api_install
api_deploy = //tools/maven:deploy
api_install = //tools/maven:install
download = //:download
download_sources = //:download_sources
gerrit = //:gerrit

19
BUCK
View File

@ -20,10 +20,12 @@ genrule(
out = '__fake.api__',
)
maven_install(name = 'api_install', deps = API_DEPS)
maven_deploy(name = 'api_deploy', deps = API_DEPS)
java_binary(
name = 'extension-api',
deps = [':extension-lib'],
visibility = ['//tools/maven:'],
)
java_binary(name = 'extension-api', deps = [':extension-lib'])
java_library(
name = 'extension-lib',
deps = [
@ -35,11 +37,13 @@ java_library(
export_deps = True,
visibility = ['PUBLIC'],
)
genrule(
name = 'extension-api-src',
cmd = 'ln -s $(location //gerrit-extension-api:api-src) $OUT',
deps = ['//gerrit-extension-api:api-src'],
out = 'extension-api-src.jar',
visibility = ['//tools/maven:'],
)
PLUGIN_API = [
@ -48,18 +52,25 @@ PLUGIN_API = [
'//gerrit-httpd:httpd',
]
java_binary(name = 'plugin-api', deps = [':plugin-lib'])
java_binary(
name = 'plugin-api',
deps = [':plugin-lib'],
visibility = ['//tools/maven:'],
)
java_library(
name = 'plugin-lib',
deps = PLUGIN_API,
export_deps = True,
visibility = ['PUBLIC'],
)
java_binary(
name = 'plugin-api-src',
deps = [
'//gerrit-extension-api:api-src',
] + [d + '-src' for d in PLUGIN_API],
visibility = ['//tools/maven:'],
)
genrule(

View File

@ -17,13 +17,6 @@ python_binary(
visibility = ['PUBLIC'],
)
python_binary(
name = 'maven_deploy',
main = 'maven_deploy.py',
deps = [':util'],
visibility = ['PUBLIC'],
)
python_library(
name = 'util',
srcs = ['util.py'],

View File

@ -11,7 +11,6 @@
# 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.
include_defs('//VERSION')
DOCS = ['//Documentation:html.zip']
LIBS = [

View File

@ -1,60 +0,0 @@
#!/bin/sh
set -e
SRC=$(ls gerrit-plugin-api/target/gerrit-plugin-api-*-sources.jar)
VER=${SRC#gerrit-plugin-api/target/gerrit-plugin-api-}
VER=${VER%-sources.jar}
type=release
case $VER in
*-SNAPSHOT)
echo >&2 "fatal: Cannot deploy $VER"
echo >&2 " Use ./tools/version.sh --release && mvn clean package"
exit 1
;;
*-[0-9]*-g*) type=snapshot ;;
esac
URL=gs://gerrit-api/$type
echo "Deploying $type gerrit-extension-api $VER"
mvn deploy:deploy-file \
-DgroupId=com.google.gerrit \
-DartifactId=gerrit-extension-api \
-Dversion=$VER \
-Dpackaging=jar \
-Dfile=gerrit-extension-api/target/gerrit-extension-api-$VER-all.jar \
-DrepositoryId=gerrit-api-repository \
-Durl=$URL
mvn deploy:deploy-file \
-DgroupId=com.google.gerrit \
-DartifactId=gerrit-extension-api \
-Dversion=$VER \
-Dpackaging=java-source \
-Dfile=gerrit-extension-api/target/gerrit-extension-api-$VER-all-sources.jar \
-Djava-source=false \
-DrepositoryId=gerrit-api-repository \
-Durl=$URL
echo "Deploying $type gerrit-plugin-api $VER"
mvn deploy:deploy-file \
-DgroupId=com.google.gerrit \
-DartifactId=gerrit-plugin-api \
-Dversion=$VER \
-Dpackaging=jar \
-Dfile=gerrit-plugin-api/target/gerrit-plugin-api-$VER.jar \
-DrepositoryId=gerrit-api-repository \
-Durl=$URL
mvn deploy:deploy-file \
-DgroupId=com.google.gerrit \
-DartifactId=gerrit-plugin-api \
-Dversion=$VER \
-Dpackaging=java-source \
-Dfile=gerrit-plugin-api/target/gerrit-plugin-api-$VER-sources.jar \
-Djava-source=false \
-DrepositoryId=gerrit-api-repository \
-Durl=$URL

24
tools/maven/BUCK Normal file
View File

@ -0,0 +1,24 @@
include_defs('//VERSION')
include_defs('//tools/maven/package.defs')
TYPE = 'snapshot' if GERRIT_VERSION.endswith('-SNAPSHOT') else 'release'
maven_package(
repository = 'gerrit-api-repository',
url = 's3://gerrit-api@commondatastorage.googleapis.com/%s' % TYPE,
version = GERRIT_VERSION,
jar = {
'gerrit-extension-api': '//:extension-api',
'gerrit-plugin-api': '//:plugin-api',
},
src = {
'gerrit-extension-api': '//:extension-api-src',
'gerrit-plugin-api': '//:plugin-api-src',
},
)
python_binary(
name = 'mvn',
main = 'mvn.py',
deps = ['//tools:util'],
)

61
tools/maven/mvn.py Normal file
View File

@ -0,0 +1,61 @@
#!/usr/bin/python
# Copyright (C) 2013 The Android Open Source Project
#
# Licensed 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.
from __future__ import print_function
from optparse import OptionParser
from sys import stderr
from util import check_output
opts = OptionParser()
opts.add_option('--repository', help='maven repository id')
opts.add_option('--url', help='maven repository url')
opts.add_option('-a', help='action (valid actions are: install,deploy)')
opts.add_option('-v', help='gerrit version')
opts.add_option('-s', action='append', help='triplet of artifactId:type:path')
args, ctx = opts.parse_args()
if not args.v:
print('version is empty', file=stderr)
exit(1)
common = [
'-DgroupId=com.google.gerrit',
'-Dversion=%s' % args.v,
]
if 'install' == args.a:
cmd = ['mvn', 'install:install-file'] + common
elif 'deploy' == args.a:
cmd = [
'mvn',
'deploy:deploy-file',
'-DrepositoryId=%s' % args.repository,
'-Durl=%s' % args.url,
] + common
else:
print("unknown action -a %s" % args.a, file=stderr)
exit(1)
for spec in args.s:
artifact, type, src = spec.split(':')
try:
check_output(cmd + [
'-DartifactId=%s' % artifact,
'-Dpackaging=%s' % type,
'-Dfile=%s' % src,
])
except Exception as e:
print('%s command failed: %s' % (action, e), file=stderr)
exit(1)

45
tools/maven/package.defs Normal file
View File

@ -0,0 +1,45 @@
# Copyright (C) 2013 The Android Open Source Project
#
# Licensed 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.
def maven_package(
version,
repository = None,
url = None,
jar = {},
src = {}):
cmd = ['$(exe //tools/maven:mvn)', '-v', version]
dep = []
for type,d in [('jar', jar), ('java-source', src)]:
for a,t in d.iteritems():
cmd.append('-s %s:%s:$(location %s)' % (a,type,t))
dep.append(t)
genrule(
name = 'install',
cmd = ' '.join(cmd + ['-a', 'install']),
deps = dep + ['//tools/maven:mvn'],
out = '__fake.install__',
)
if repository and url:
genrule(
name = 'deploy',
cmd = ' '.join(cmd + [
'-a', 'deploy',
'--repository', repository,
'--url', url]),
deps = dep + ['//tools/maven:mvn'],
out = '__fake.deploy__',
)

View File

@ -1,92 +0,0 @@
#!/usr/bin/python
# Copyright (C) 2013 The Android Open Source Project
#
# Licensed 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.
from __future__ import print_function
from optparse import OptionParser
from os.path import exists
from sys import stderr
from util import check_output
opts = OptionParser()
opts.add_option('-a', help='action (valid actions are: install,deploy)')
opts.add_option('-v', help='gerrit version')
opts.add_option('-d', help='dependencies (jars artifacts)')
args, ctx = opts.parse_args()
action = args.a
if action not in ['deploy', 'install']:
print("unknown action : %s" % action, file=stderr)
exit(1)
deps = args.d.split()
if not deps:
print('dependencies are empty')
exit(1)
extension_jar = [x for x in deps if "extension-api.jar" in x][0]
extension_src = [x for x in deps if "extension-api-src.jar" in x][0]
plugin_jar = [x for x in deps if "plugin-api.jar" in x][0]
plugin_src = [x for x in deps if "plugin-api-src.jar" in x][0]
version = args.v
if not version:
print('version is empty')
exit(1)
REPO_TYPE = 'snapshot' if version.endswith("SNAPSHOT") else 'release'
URL = 's3://gerrit-api@commondatastorage.googleapis.com/%s' % REPO_TYPE
plugin = ['-DartifactId=gerrit-plugin-api']
extension = ['-DartifactId=gerrit-extension-api']
common = [
'-DgroupId=com.google.gerrit',
'-Dversion=%s' % version,
]
jar = ['-Dpackaging=jar']
src = ['-Dpackaging=java-source']
cmd = {
'deploy': ['mvn',
'deploy:deploy-file',
'-DrepositoryId=gerrit-api-repository',
'-Durl=%s' % URL],
'install': ['mvn',
'install:install-file'],
}
try:
check_output(cmd[action] +
plugin +
common +
jar +
['-Dfile=%s' % plugin_jar])
check_output(cmd[action] +
plugin +
common +
src +
['-Dfile=%s' % plugin_src])
check_output(cmd[action] +
extension +
common +
jar +
['-Dfile=%s' % extension_jar])
check_output(cmd[action] +
extension +
common +
src +
['-Dfile=%s' % extension_src])
except Exception as e:
print('%s command failed: %s' % (action, e), file=stderr)
exit(1)