From b40a758d778e9fbfb84e31d0c925c57c6b2251ef Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 17 Jun 2023 09:47:22 +0800 Subject: [PATCH] Support Gradle 8.0 (#6) --- .gitattributes | 4 + .github/workflows/main.yml | 27 ++ README.md | 4 +- build.gradle | 33 ++- gradle.properties | 4 + gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 276 +++++++++++------- gradlew.bat | 195 ++++++------- renovate.json | 6 + settings.gradle | 1 + .../internal/plugins/osgi/OsgiHelper.java | 4 +- ...uginConvention.java => OsgiExtension.java} | 18 +- .../osgi/plugins/osgi/OsgiPlugin.java | 9 +- .../com.github.blindpirate.osgi.properties | 1 - ...onTest.groovy => OsgiExtensionTest.groovy} | 16 +- .../osgi/plugins/osgi/OsgiPluginTest.groovy | 2 +- 17 files changed, 353 insertions(+), 250 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/main.yml create mode 100644 gradle.properties create mode 100644 renovate.json create mode 100644 settings.gradle rename src/main/java/com/github/blindpirate/osgi/plugins/osgi/{OsgiPluginConvention.java => OsgiExtension.java} (90%) delete mode 100644 src/main/resources/META-INF/gradle-plugins/com.github.blindpirate.osgi.properties rename src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/{OsgiPluginConventionTest.groovy => OsgiExtensionTest.groovy} (83%) diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..27fc7c2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +* text=auto eol=lf + +*.bat text eol=crlf +*.jar binary \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..8c666b2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,27 @@ +name: Main + +on: + pull_request: + push: + branches: + - master + workflow_dispatch: + +jobs: + build: + strategy: + matrix: + os: [ ubuntu-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 17 + - uses: gradle/wrapper-validation-action@v1 + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Execute Gradle build + run: ./gradlew build diff --git a/README.md b/README.md index e9151de..5282170 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,6 @@ If you're still using the deprecated `osgi` Gradle plugin in Gradle 6, you can u ## How to use -Just replace the original `apply plugin: 'osgi'` with `apply plugin: 'com.github.blindpirate.osgi'`. +[![Download](https://img.shields.io/gradle-plugin-portal/v/com.github.blindpirate.osgi)](https://plugins.gradle.org/plugin/com.github.blindpirate.osgi) -See [it on Gradle plugin portal](https://plugins.gradle.org/plugin/com.github.blindpirate.osgi). +Just replace the original `apply plugin: 'osgi'` with `apply plugin: 'com.github.blindpirate.osgi'`. diff --git a/build.gradle b/build.gradle index 73afb8a..31f0311 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java-library' id 'groovy' - id "com.gradle.plugin-publish" version "0.12.0" + id "com.gradle.plugin-publish" version "1.2.0" } repositories { @@ -10,33 +10,42 @@ repositories { group 'com.github.blindpirate' version '0.0.6' -sourceCompatibility = '1.8' -targetCompatibility = '1.8' + +java { + sourceCompatibility = '1.8' + targetCompatibility = '1.8' +} dependencies { api gradleApi() api localGroovy() - api 'biz.aQute.bnd:biz.aQute.bndlib:5.2.0' + api 'biz.aQute.bnd:biz.aQute.bndlib:6.4.1' - testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'net.bytebuddy:byte-buddy:1.10.6' - testImplementation(platform('org.junit:junit-bom:5.8.0')) + testImplementation 'org.spockframework:spock-core:2.3-groovy-3.0' + testImplementation 'net.bytebuddy:byte-buddy:1.14.5' + testImplementation(platform('org.junit:junit-bom:5.9.3')) testImplementation('org.junit.vintage:junit-vintage-engine') } -pluginBundle { +gradlePlugin { + website = 'https://github.com/blindpirate/gradle-legacy-osgi-plugin' + vcsUrl = 'https://github.com/blindpirate/gradle-legacy-osgi-plugin' + plugins { osgiPlugin { - website = 'https://github.com/blindpirate/gradle-legacy-osgi-plugin' - vcsUrl = 'https://github.com/blindpirate/gradle-legacy-osgi-plugin' - description = 'A legacy osgi plugin in Gradle 5' - tags = ['legacy', 'osgi'] id = 'com.github.blindpirate.osgi' + implementationClass = "com.github.blindpirate.osgi.plugins.osgi.OsgiPlugin" displayName = 'A legacy osgi plugin in Gradle 5' + description = 'A legacy osgi plugin in Gradle 5' + tags.set(['legacy', 'osgi']) } } } +tasks.named('publishPlugins') { + notCompatibleWithConfigurationCache("https://github.com/gradle/gradle/issues/21283") +} + publishPlugins.dependsOn 'check' test { diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..139007c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.configuration-cache=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..c1962a79e29d3e0ab67b14947c167a862655af9b 100644 GIT binary patch delta 42429 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 delta 38966 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 QmH#SCQ*15fAWu&jxaFImx=8h_g% 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,7 +129,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -105,79 +137,109 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9109989..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,103 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..39a2b6e --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ] +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..24491ae --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +enableFeaturePreview("STABLE_CONFIGURATION_CACHE") diff --git a/src/main/java/com/github/blindpirate/osgi/internal/plugins/osgi/OsgiHelper.java b/src/main/java/com/github/blindpirate/osgi/internal/plugins/osgi/OsgiHelper.java index be3e1d5..d955e53 100644 --- a/src/main/java/com/github/blindpirate/osgi/internal/plugins/osgi/OsgiHelper.java +++ b/src/main/java/com/github/blindpirate/osgi/internal/plugins/osgi/OsgiHelper.java @@ -17,7 +17,7 @@ import org.gradle.api.GradleException; import org.gradle.api.Project; -import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.plugins.BasePluginExtension; import java.util.StringTokenizer; import java.util.regex.Matcher; @@ -59,7 +59,7 @@ public class OsgiHelper { */ public String getBundleSymbolicName(Project project) { String group = project.getGroup().toString(); - String archiveBaseName = project.getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName(); + String archiveBaseName = project.getExtensions().getByType(BasePluginExtension.class).getArchivesName().get(); if (archiveBaseName.startsWith(group)) { return archiveBaseName; } diff --git a/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConvention.java b/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiExtension.java similarity index 90% rename from src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConvention.java rename to src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiExtension.java index e659cb6..9ee6bd6 100644 --- a/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConvention.java +++ b/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiExtension.java @@ -22,26 +22,26 @@ import org.gradle.api.internal.ConventionMapping; import org.gradle.api.internal.IConventionAware; import org.gradle.api.internal.project.ProjectInternal; -import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.plugins.BasePluginExtension; import org.gradle.internal.Actions; import org.gradle.internal.reflect.Instantiator; +import javax.inject.Inject; import java.util.concurrent.Callable; -import static org.gradle.util.ConfigureUtil.configure; - /** * Is mixed into the project when applying the {@link OsgiPlugin}. */ -public class OsgiPluginConvention { +public class OsgiExtension { private final ProjectInternal project; /** - * Creates an {@link OsgiPluginConvention} instance. + * Creates an {@link OsgiExtension} instance. * * @param project the project instance */ - public OsgiPluginConvention(ProjectInternal project) { + @Inject + public OsgiExtension(ProjectInternal project) { this.project = project; } @@ -78,7 +78,9 @@ public OsgiManifest osgiManifest() { * @return the created OsgiManifest instance */ public OsgiManifest osgiManifest(Closure closure) { - return configure(closure, createDefaultOsgiManifest()); + OsgiManifest manifest = createDefaultOsgiManifest(); + project.configure(manifest, closure); + return manifest; } /** @@ -108,7 +110,7 @@ public Object call() throws Exception { mapping.map("name", new Callable() { @Override public Object call() throws Exception { - return project.getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName(); + return project.getExtensions().getByType(BasePluginExtension.class).getArchivesName().get(); } }); mapping.map("symbolicName", new Callable() { diff --git a/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPlugin.java b/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPlugin.java index 541b507..3671c5b 100644 --- a/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPlugin.java +++ b/src/main/java/com/github/blindpirate/osgi/plugins/osgi/OsgiPlugin.java @@ -22,7 +22,7 @@ import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.plugins.JavaPluginConvention; +import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.Sync; import org.gradle.api.tasks.bundling.Jar; @@ -36,8 +36,7 @@ public class OsgiPlugin implements Plugin { public void apply(final Project project) { project.getPluginManager().apply(JavaBasePlugin.class); - final OsgiPluginConvention osgiConvention = new OsgiPluginConvention((ProjectInternal) project); - project.getConvention().getPlugins().put("osgi", osgiConvention); + final OsgiExtension extension = project.getExtensions().create("osgi", OsgiExtension.class, project); project.getPlugins().withType(JavaPlugin.class, new Action() { @Override @@ -45,7 +44,7 @@ public void execute(JavaPlugin javaPlugin) { // When creating the OSGi manifest, we must have a single view of all of the classes included in the jar. Sync prepareOsgiClasses = project.getTasks().create("osgiClasses", Sync.class); - FileCollection classes = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main").getOutput().getClassesDirs(); + FileCollection classes = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets().getByName("main").getOutput().getClassesDirs(); File singleClassesDirectory = new File(project.getBuildDir(), "osgi-classes"); prepareOsgiClasses.setDescription("Prepares a single classes directory required for OSGi analysis."); prepareOsgiClasses.from(classes); @@ -53,7 +52,7 @@ public void execute(JavaPlugin javaPlugin) { Jar jarTask = (Jar) project.getTasks().getByName("jar"); jarTask.dependsOn(prepareOsgiClasses); - OsgiManifest osgiManifest = osgiConvention.osgiManifest(); + OsgiManifest osgiManifest = extension.osgiManifest(); osgiManifest.setClassesDir(singleClassesDirectory); osgiManifest.setClasspath(project.getConfigurations().getByName("runtimeClasspath")); diff --git a/src/main/resources/META-INF/gradle-plugins/com.github.blindpirate.osgi.properties b/src/main/resources/META-INF/gradle-plugins/com.github.blindpirate.osgi.properties deleted file mode 100644 index 652ae74..0000000 --- a/src/main/resources/META-INF/gradle-plugins/com.github.blindpirate.osgi.properties +++ /dev/null @@ -1 +0,0 @@ -implementation-class=com.github.blindpirate.osgi.plugins.osgi.OsgiPlugin diff --git a/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConventionTest.groovy b/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiExtensionTest.groovy similarity index 83% rename from src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConventionTest.groovy rename to src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiExtensionTest.groovy index 713c00c..8c1b0bd 100644 --- a/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginConventionTest.groovy +++ b/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiExtensionTest.groovy @@ -21,24 +21,24 @@ import org.gradle.api.Action import org.gradle.api.plugins.JavaBasePlugin import spock.lang.Issue -class OsgiPluginConventionTest extends AbstractProjectBuilderSpec { +class OsgiExtensionTest extends AbstractProjectBuilderSpec { - OsgiPluginConvention osgiPluginConvention + OsgiExtension extension def setup() { - osgiPluginConvention = new OsgiPluginConvention(project) + extension = new OsgiExtension(project) project.pluginManager.apply(JavaBasePlugin) } def osgiManifestWithNoClosure() { - OsgiManifest osgiManifest = osgiPluginConvention.osgiManifest() + OsgiManifest osgiManifest = extension.osgiManifest() expect: matchesExpectedConfig(osgiManifest) } def osgiManifestWithClosure() { - OsgiManifest osgiManifest = osgiPluginConvention.osgiManifest { + OsgiManifest osgiManifest = extension.osgiManifest { description = 'myDescription' } @@ -48,7 +48,7 @@ class OsgiPluginConventionTest extends AbstractProjectBuilderSpec { } def osgiManifestWithAction() { - OsgiManifest osgiManifest = osgiPluginConvention.osgiManifest({ OsgiManifest manifest -> + OsgiManifest osgiManifest = extension.osgiManifest({ OsgiManifest manifest -> manifest.description = 'myDescription' } as Action) @@ -64,7 +64,7 @@ class OsgiPluginConventionTest extends AbstractProjectBuilderSpec { "2.1" } } - def manifest = osgiPluginConvention.osgiManifest() + def manifest = extension.osgiManifest() expect: manifest.version == "2.1" @@ -72,7 +72,7 @@ class OsgiPluginConventionTest extends AbstractProjectBuilderSpec { @Issue("GRADLE-1670") def "computes its defaults lazily"() { - def manifest = osgiPluginConvention.osgiManifest() + def manifest = extension.osgiManifest() def i = 0 project.version = "${-> ++i}" project.group = "my.group" diff --git a/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginTest.groovy b/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginTest.groovy index 579523c..948b966 100644 --- a/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginTest.groovy +++ b/src/test/groovy/com/github/blindpirate/osgi/plugins/osgi/OsgiPluginTest.groovy @@ -25,7 +25,7 @@ class OsgiPluginTest extends AbstractProjectBuilderSpec { expect: project.plugins.hasPlugin('java-base') - project.convention.plugins.osgi instanceof OsgiPluginConvention + project.extensions.getByName('osgi') instanceof OsgiExtension } void addsAnOsgiManifestToTheDefaultJar() {