Define gerrit-plugin-api as a subset API
This is a new JAR produced by the build that contains almost all of the code that the corresponding WAR contains at runtime. This permits plugin authors to compile against this single interface JAR, and then load their plugin into a running server that uses the real WAR. Having the API be a single JAR simplifies plugin development, Maven users can depend on this single JAR using the provided scope. Other IDE users can just make a new Java project and add this single JAR as the only dependency. Change-Id: Ie045ec4202d44b78b75ccb4af000e13c1e7378ce
This commit is contained in:

committed by
Nasser Grainawi

parent
8909b5cf59
commit
980efdb376
6
gerrit-plugin-api/.gitignore
vendored
Normal file
6
gerrit-plugin-api/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/target
|
||||
/.classpath
|
||||
/.project
|
||||
/.settings/org.maven.ide.eclipse.prefs
|
||||
/.settings/org.eclipse.m2e.core.prefs
|
||||
/gerrit-pluginapi-ssh.iml
|
101
gerrit-plugin-api/pom.xml
Normal file
101
gerrit-plugin-api/pom.xml
Normal file
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (C) 2012 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.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>com.google.gerrit</groupId>
|
||||
<artifactId>gerrit-parent</artifactId>
|
||||
<version>2.5-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>gerrit-plugin-api</artifactId>
|
||||
<name>Gerrit Code Review - Plugin API</name>
|
||||
|
||||
<description>
|
||||
API for tightly coupled plugins to compile against
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.google.gerrit</groupId>
|
||||
<artifactId>gerrit-sshd</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<configuration>
|
||||
<createSourcesJar>true</createSourcesJar>
|
||||
<artifactSet>
|
||||
<excludes>
|
||||
<exclude>gwtexpui:gwtexpui</exclude>
|
||||
<exclude>gwtjsonrpc:gwtjsonrpc</exclude>
|
||||
<exclude>com.google.gerrit:gerrit-ehcache</exclude>
|
||||
<exclude>com.google.gerrit:gerrit-prettify</exclude>
|
||||
<exclude>com.google.gerrit:gerrit-patch-commonsnet</exclude>
|
||||
<exclude>com.google.gerrit:gerrit-patch-jgit</exclude>
|
||||
<exclude>com.google.gerrit:gerrit-util-ssl</exclude>
|
||||
<exclude>com.google.gerrit:juniversalchardet</exclude>
|
||||
|
||||
<exclude>com.googlecode.prolog-cafe:PrologCafe</exclude>
|
||||
<exclude>org.slf4j:slf4j-log4j12</exclude>
|
||||
<exclude>log4j:log4j</exclude>
|
||||
|
||||
<exclude>commons-collections:commons-collections</exclude>
|
||||
<exclude>commons-codec:commons-codec</exclude>
|
||||
<exclude>commons-dbcp:commons-dbcp</exclude>
|
||||
<exclude>commons-lang:commons-lang</exclude>
|
||||
<exclude>commons-net:commons-net</exclude>
|
||||
<exclude>commons-pool:commons-pool</exclude>
|
||||
|
||||
<exclude>asm:asm</exclude>
|
||||
<exclude>eu.medsea.mimeutil:mime-util</exclude>
|
||||
<exclude>net.sf.ehcache:ehcache-core</exclude>
|
||||
<exclude>org.antlr:antlr</exclude>
|
||||
<exclude>org.antlr:antlr-runtime</exclude>
|
||||
<exclude>org.apache.mina:mina-core</exclude>
|
||||
<exclude>oro:oro</exclude>
|
||||
</excludes>
|
||||
</artifactSet>
|
||||
<filters>
|
||||
<filter>
|
||||
<artifact>com.google.gerrit:gerrit-server</artifact>
|
||||
<excludes>
|
||||
<exclude>gerrit/**</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
12
pom.xml
12
pom.xml
@@ -87,6 +87,8 @@ limitations under the License.
|
||||
<module>gerrit-gwtdebug</module>
|
||||
<module>gerrit-war</module>
|
||||
|
||||
<module>gerrit-plugin-api</module>
|
||||
|
||||
<module>gerrit-gwtui</module>
|
||||
</modules>
|
||||
|
||||
@@ -333,7 +335,7 @@ limitations under the License.
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>1.6</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
@@ -425,6 +427,14 @@ limitations under the License.
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>net.anzix.aws</groupId>
|
||||
<artifactId>s3-maven-wagon</artifactId>
|
||||
<version>3.2</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
|
37
tools/deploy_plugin_api.sh
Executable file
37
tools/deploy_plugin_api.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
|
||||
SRC=$(ls gerrit-plugin-api/target/gerrit-plugin-api-*-sources.jar)
|
||||
VER=${SRC#gerrit-plugin-api/target/gerrit-plugin-api-}
|
||||
VER=${VER%-sources.jar}
|
||||
JAR=gerrit-plugin-api/target/gerrit-plugin-api-$VER.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=s3://gerrit-api@commondatastorage.googleapis.com/$type
|
||||
|
||||
echo "Deploying gerrit-plugin-api $VER to $URL"
|
||||
mvn deploy:deploy-file \
|
||||
-DgroupId=com.google.gerrit \
|
||||
-DartifactId=gerrit-plugin-api \
|
||||
-Dversion=$VER \
|
||||
-Dpackaging=jar \
|
||||
-Dfile=$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=$SRC \
|
||||
-Djava-source=false \
|
||||
-DrepositoryId=gerrit-api-repository \
|
||||
-Durl=$URL
|
Reference in New Issue
Block a user