From 78e4b97a18a18f84c228de64fc48cee48138fbfe Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sun, 27 Oct 2013 20:32:40 +0100 Subject: [PATCH] Set up tool chain to install LO artifacts in Maven repositories Add /bin to your path. After full LO compile, the LO Java artifacts can be installed in the local Maven repository: mvn.py -a install -v 4.2.0 -s juh:jar:/juh.jar mvn.py -a install -v 4.2.0 -s jurt:jar:/jurt.jar mvn.py -a install -v 4.2.0 -s ridl:jar:/ridl.jar mvn.py -a install -v 4.2.0 -s unoil:jar:/unoil.jar With the artifacts installed this way, it is now possible to consume LO artifacts from custom pom.xml: [...] 4.2.0 [...] org.libreoffice juh ${LibreOffice-Version} provided org.libreoffice jurt ${LibreOffice-Version} provided org.libreoffice ridl ${LibreOffice-Version} provided org.libreoffice unoil ${LibreOffice-Version} provided Change-Id: I2ad982ae23c78242ed8f1ac4c88c6be424cc7a0d Reviewed-on: https://gerrit.libreoffice.org/6453 Reviewed-by: Michael Stahl Tested-by: Michael Stahl --- bin/fake_pom.xml | 6 +++++ bin/mvn.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 bin/fake_pom.xml create mode 100755 bin/mvn.py diff --git a/bin/fake_pom.xml b/bin/fake_pom.xml new file mode 100644 index 000000000000..50599f3ab4a7 --- /dev/null +++ b/bin/fake_pom.xml @@ -0,0 +1,6 @@ + + 4.0.0 + org.libreoffice + LibreOffice-Maven + 1 + diff --git a/bin/mvn.py b/bin/mvn.py new file mode 100755 index 000000000000..d5a1c9a0d165 --- /dev/null +++ b/bin/mvn.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from __future__ import print_function +from optparse import OptionParser +from os import path +from sys import stderr +try: + from subprocess import check_output +except ImportError: + from subprocess import Popen, PIPE + def check_output(*cmd): + return Popen(*cmd, stdout=PIPE).communicate()[0] +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='libreoffice 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=org.libreoffice', + '-Dversion=%s' % args.v, +] + +self = path.dirname(path.abspath(__file__)) +mvn = ['mvn', '--file', path.join(self, 'fake_pom.xml')] + +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, packaging_type, src = spec.split(':') + try: + check_output(cmd + [ + '-DartifactId=%s' % artifact, + '-Dpackaging=%s' % packaging_type, + '-Dfile=%s' % src, + ]) + except Exception as e: + print('%s command failed: %s' % (args.a, e), file=stderr) + exit(1)