From 54edea81a818ac56dd6b903d7f31255750a0393d Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:03:48 +0800 Subject: [PATCH 1/9] Correct usage of maven-tools under JRuby 10.0.3+ Added bigdecimal and ostruct as runtime dependencies due to virtus EOL, and transitive dependency requirement. See https://github.com/jruby/warbler/pull/607 for additional info. --- maven-tools.gemspec | 2 ++ pom.xml | 12 ++++++++ spec/dsl/gemspec_spec/maven-tools.gemspec | 28 +++++++++++++++++++ spec/dsl/gemspec_spec/maven-tools.xml | 12 ++++++++ .../profile_gemspec_spec/maven-tools.gemspec | 28 +++++++++++++++++++ spec/dsl/profile_gemspec_spec/maven-tools.xml | 12 ++++++++ .../project_gemspec_spec/maven-tools.gemspec | 28 +++++++++++++++++++ spec/dsl/project_gemspec_spec/maven-tools.xml | 12 ++++++++ spec/dsl/project_gemspec_spec/profile.xml | 12 ++++++++ 9 files changed, 146 insertions(+) diff --git a/maven-tools.gemspec b/maven-tools.gemspec index f924d62..a99d7ab 100644 --- a/maven-tools.gemspec +++ b/maven-tools.gemspec @@ -29,6 +29,8 @@ Gem::Specification.new do |s| s.test_files += Dir['spec/**/*gem'] s.add_runtime_dependency 'virtus', '~> 1.0' + s.add_runtime_dependency 'bigdecimal' # virtus is EOL, but depends on axiom-types which has a bigdecimal dependency + s.add_runtime_dependency 'ostruct' # virtus is EOL, but depends on ostruct usage # get them out from here until jruby-maven-plugin installs test gems somewhere else then runtime gems diff --git a/pom.xml b/pom.xml index aa4ad76..a7dfdd5 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,18 @@ [1.0,1.99999] gem + + rubygems + bigdecimal + [0,) + gem + + + rubygems + ostruct + [0,) + gem + rubygems rake diff --git a/spec/dsl/gemspec_spec/maven-tools.gemspec b/spec/dsl/gemspec_spec/maven-tools.gemspec index dfdebc7..aa00d69 100644 --- a/spec/dsl/gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/gemspec_spec/maven-tools.gemspec @@ -24,6 +24,34 @@ dependencies: - - ~> - !ruby/object:Gem::Version version: '1.0' +- !ruby/object:Gem::Dependency + name: bigdecimal + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' +- !ruby/object:Gem::Dependency + name: ostruct + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/gemspec_spec/maven-tools.xml b/spec/dsl/gemspec_spec/maven-tools.xml index 922dda7..9fdaa03 100644 --- a/spec/dsl/gemspec_spec/maven-tools.xml +++ b/spec/dsl/gemspec_spec/maven-tools.xml @@ -15,6 +15,18 @@ [1.0,1.99999] gem + + rubygems + bigdecimal + [0,) + gem + + + rubygems + ostruct + [0,) + gem + rubygems rake diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec index dfdebc7..aa00d69 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec @@ -24,6 +24,34 @@ dependencies: - - ~> - !ruby/object:Gem::Version version: '1.0' +- !ruby/object:Gem::Dependency + name: bigdecimal + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' +- !ruby/object:Gem::Dependency + name: ostruct + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.xml b/spec/dsl/profile_gemspec_spec/maven-tools.xml index a7dc096..ea76688 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.xml +++ b/spec/dsl/profile_gemspec_spec/maven-tools.xml @@ -16,6 +16,18 @@ [1.0,1.99999] gem + + rubygems + bigdecimal + [0,) + gem + + + rubygems + ostruct + [0,) + gem + rubygems rake diff --git a/spec/dsl/project_gemspec_spec/maven-tools.gemspec b/spec/dsl/project_gemspec_spec/maven-tools.gemspec index dfdebc7..aa00d69 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/project_gemspec_spec/maven-tools.gemspec @@ -24,6 +24,34 @@ dependencies: - - ~> - !ruby/object:Gem::Version version: '1.0' +- !ruby/object:Gem::Dependency + name: bigdecimal + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' +- !ruby/object:Gem::Dependency + name: ostruct + requirement: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - '>=' + - !ruby/object:Gem::Version + version: '0' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/project_gemspec_spec/maven-tools.xml b/spec/dsl/project_gemspec_spec/maven-tools.xml index 0230a41..6781162 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.xml +++ b/spec/dsl/project_gemspec_spec/maven-tools.xml @@ -36,6 +36,18 @@ [1.0,1.99999] gem + + rubygems + bigdecimal + [0,) + gem + + + rubygems + ostruct + [0,) + gem + rubygems rake diff --git a/spec/dsl/project_gemspec_spec/profile.xml b/spec/dsl/project_gemspec_spec/profile.xml index f3636a9..b3a8a1e 100644 --- a/spec/dsl/project_gemspec_spec/profile.xml +++ b/spec/dsl/project_gemspec_spec/profile.xml @@ -70,6 +70,18 @@ [1.0,1.99999] gem + + rubygems + bigdecimal + [0,) + gem + + + rubygems + ostruct + [0,) + gem + rubygems rake From 29025cf2aefd537fcb56abb77e5b16da3b96a963 Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:31:14 +0800 Subject: [PATCH 2/9] Run CI on modern CRuby/JRuby --- .github/workflows/ci.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e74e8d7..af24759 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,24 +9,28 @@ on: jobs: ci: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - ruby: [jruby-9.4.9.0, 3.3] - java: [8] + ruby: ['jruby-10', 'jruby-9.4', '4.0', '3.4', '3.3'] + java: [8, 25] + exclude: + - ruby: 'jruby-10' # JRuby 10 requires Java 21+ + java: 8 steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v5 - name: Set up java - uses: actions/setup-java@v2 + uses: actions/setup-java@v5 with: - distribution: zulu java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: maven - name: Set up ruby uses: ruby/setup-ruby@v1 From 6da8da81737dae4cede05f1e900d75167a1dc50b Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:31:44 +0800 Subject: [PATCH 3/9] Bump version to 1.2.4 --- lib/maven/tools/version.rb | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/maven/tools/version.rb b/lib/maven/tools/version.rb index 3ee83ec..d64033c 100644 --- a/lib/maven/tools/version.rb +++ b/lib/maven/tools/version.rb @@ -20,6 +20,6 @@ # module Maven module Tools - VERSION = '1.2.3'.freeze + VERSION = '1.2.4'.freeze end end diff --git a/pom.xml b/pom.xml index a7dfdd5..dad3fca 100644 --- a/pom.xml +++ b/pom.xml @@ -2,10 +2,10 @@ 4.0.0 rubygems maven-tools - 1.2.2 + 1.2.4 gem helpers for maven related tasks - http://github.com/jruby/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -15,7 +15,7 @@ https://github.com/jruby/maven-tools.git - http://github.com/jruby/maven-tools + https://github.com/jruby/maven-tools From 00cb11078a8250d4f43f0b85de28fc4dd2d24ce6 Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:39:44 +0800 Subject: [PATCH 4/9] Bump Maven wrapper from 3.9.9 to 3.9.12 --- .gitignore | 1 + .mvn/wrapper/maven-wrapper.jar | Bin 49502 -> 0 bytes .mvn/wrapper/maven-wrapper.properties | 4 +- mvnw | 407 +++++++++++++++----------- mvnw.cmd | 286 ++++++++++-------- 5 files changed, 403 insertions(+), 295 deletions(-) delete mode 100644 .mvn/wrapper/maven-wrapper.jar diff --git a/.gitignore b/.gitignore index e8268ed..51290cf 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ Gemfile.lock *.gem .ruby-version pom.maven-tools.gemspec.xml +.idea diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 5fd4d5023f1463b5ba3970e33c460c1eb26d748d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49502 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%0A$pwhjXzyA0ZzErH{1@M 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 OJOEd-=rxTO#Qy`$*1Hh^ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 11213b0..8dea6c2 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1 +1,3 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +wrapperVersion=3.3.4 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip diff --git a/mvnw b/mvnw index fc7efd1..bd8896b 100755 --- a/mvnw +++ b/mvnw @@ -19,216 +19,277 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output # ---------------------------------------------------------------------------- -if [ -z "$MAVEN_SKIP_RC" ] ; then +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + 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" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi fi +} -fi +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # - # Look for the Apple JDKs first to preserve the existing behaviour, and then look - # for the new JDKs provided by Oracle. - # - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then - # - # Oracle JDKs - # - export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then - # - # Apple JDKs - # - export JAVA_HOME=`/usr/libexec/java_home` - fi - ;; -esac +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi +die() { + printf %s\\n "$1" >&2 + exit 1 +} -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" - saveddir=`pwd` +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" - M2_HOME=`dirname "$PRG"`/.. +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} - cd "$saveddir" - # echo Using m2 at $M2_HOME +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" fi -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" fi -# For Migwn, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" fi -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" fi -if [ -z "$JAVACMD" ] ; then - 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" - else - JAVACMD="$JAVA_HOME/bin/java" +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true fi else - JAVACMD="`which java`" + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 fi fi -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi fi -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - local basedir=$(pwd) - local wdir=$(pwd) - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi fi - wdir=$(cd "$wdir/.."; pwd) done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# Provide a "standardized" way to retrieve the CLI args that will -# work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" -export MAVEN_CMD_LINE_ARGS + set -f +fi -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CMD_LINE_ARGS +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" +clean || : +exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd index 0010480..92450f9 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -1,3 +1,4 @@ +<# : batch portion @REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @@ -18,128 +19,171 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output @REM ---------------------------------------------------------------------------- -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -set MAVEN_CMD_LINE_ARGS=%MAVEN_CONFIG% %* - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" - -set WRAPPER_JAR=""%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" From 92372cc5533056c4b06ea7a425e4df43f11a00fb Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:46:15 +0800 Subject: [PATCH 5/9] Bump plugins and wagon to latest versions --- lib/maven/tools/versions.rb | 4 ++-- pom.xml | 6 +++--- spec/dsl/gemspec_spec/jars_and_poms.xml | 4 ++-- spec/dsl/gemspec_spec/jars_and_poms_include_jars.xml | 4 ++-- spec/dsl/gemspec_spec/maven-tools.xml | 4 ++-- spec/dsl/profile_gemspec_spec/jars_and_poms.xml | 4 ++-- .../dsl/profile_gemspec_spec/jars_and_poms_include_jars.xml | 4 ++-- spec/dsl/profile_gemspec_spec/maven-tools.xml | 4 ++-- spec/dsl/profile_gemspec_spec/no_gems.xml | 4 ++-- spec/dsl/profile_gemspec_spec/snapshot.xml | 4 ++-- spec/dsl/profile_gemspec_spec/unknown_license.xml | 4 ++-- spec/dsl/project_gemspec_spec/extended.xml | 4 ++-- spec/dsl/project_gemspec_spec/jars_and_poms.xml | 4 ++-- .../dsl/project_gemspec_spec/jars_and_poms_include_jars.xml | 4 ++-- spec/dsl/project_gemspec_spec/maven-tools.xml | 4 ++-- spec/dsl/project_gemspec_spec/no_gems.xml | 4 ++-- spec/dsl/project_gemspec_spec/profile.xml | 4 ++-- spec/dsl/project_gemspec_spec/snapshot.xml | 4 ++-- spec/dsl/project_gemspec_spec/unknown_license.xml | 4 ++-- spec/gemfile/pom.xml | 4 ++-- spec/gemfile_include_jars/pom.xml | 4 ++-- spec/gemfile_with_access_to_model/pom.xml | 4 ++-- spec/gemfile_with_custom_source/pom.xml | 4 ++-- spec/gemfile_with_custom_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemfile_with_extras/pom.xml | 4 ++-- spec/gemfile_with_groups/pom.xml | 4 ++-- spec/gemfile_with_groups_and_lockfile/pom.xml | 4 ++-- spec/gemfile_with_jars_lock/pom.xml | 4 ++-- spec/gemfile_with_lock/pom.xml | 4 ++-- spec/gemfile_with_path/pom.xml | 4 ++-- spec/gemfile_with_platforms/pom.xml | 4 ++-- spec/gemfile_with_source/pom.xml | 4 ++-- spec/gemfile_with_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemfile_with_source_and_no_jar/pom.xml | 4 ++-- spec/gemfile_with_test_group/pom.xml | 4 ++-- spec/gemfile_with_two_sources/pom.xml | 4 ++-- spec/gemfile_without_gemspec/pom.xml | 4 ++-- spec/gemspec/pom.xml | 4 ++-- spec/gemspec_in_profile/pom.xml | 4 ++-- spec/gemspec_include_jars/pom.xml | 4 ++-- spec/gemspec_no_rubygems_repo/pom.xml | 4 ++-- spec/gemspec_prerelease/pom.xml | 4 ++-- spec/gemspec_prerelease_snapshot/pom.xml | 4 ++-- spec/gemspec_with_access_to_model/pom.xml | 4 ++-- spec/gemspec_with_custom_source/pom.xml | 4 ++-- spec/gemspec_with_custom_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemspec_with_extras/pom.xml | 4 ++-- spec/gemspec_with_jar_dependencies/pom.xml | 4 ++-- spec/gemspec_with_jars_lock/pom.xml | 4 ++-- spec/gemspec_with_prereleased_dependency/pom.xml | 4 ++-- .../gemspec_with_prereleased_dependency_and_no_repo/pom.xml | 4 ++-- spec/gemspec_with_source/pom.xml | 4 ++-- spec/gemspec_with_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemspec_with_source_and_no_jar/pom.xml | 4 ++-- spec/mavenfile/Mavenfile | 2 +- spec/pom.xml | 2 +- spec/pom_maven_alternative_style/pom.rb | 2 +- spec/pom_maven_hash_style/pom.rb | 2 +- spec/pom_maven_style/pom.rb | 2 +- 59 files changed, 114 insertions(+), 114 deletions(-) diff --git a/lib/maven/tools/versions.rb b/lib/maven/tools/versions.rb index add9e6b..3b11ff2 100644 --- a/lib/maven/tools/versions.rb +++ b/lib/maven/tools/versions.rb @@ -24,12 +24,12 @@ module Tools VERSIONS = { :jar_plugin => "2.4", :clean_plugin => "2.4", - :jruby_plugins => "3.0.0", + :jruby_plugins => "3.0.6", :jruby9_plugins => "0.3.0", :bundler_version => "1.10.6", :jruby_version => "9.1.2.0", :polyglot_version => "0.1.18", - :mavengem_wagon => "2.0.0" + :mavengem_wagon => "2.0.2" }.freeze end end diff --git a/pom.xml b/pom.xml index dad3fca..9454384 100644 --- a/pom.xml +++ b/pom.xml @@ -45,8 +45,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 @@ -87,7 +87,7 @@ org.jruby.maven mavengem-wagon - ${mavengem.plugins.version} + ${mavengem.wagon.version} org.jruby.maven diff --git a/spec/dsl/gemspec_spec/jars_and_poms.xml b/spec/dsl/gemspec_spec/jars_and_poms.xml index 71d8fe8..0e2720f 100644 --- a/spec/dsl/gemspec_spec/jars_and_poms.xml +++ b/spec/dsl/gemspec_spec/jars_and_poms.xml @@ -5,8 +5,8 @@ 0.0.0 gemspec_spec - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/gemspec_spec/jars_and_poms_include_jars.xml b/spec/dsl/gemspec_spec/jars_and_poms_include_jars.xml index e7ff193..9bdde6a 100644 --- a/spec/dsl/gemspec_spec/jars_and_poms_include_jars.xml +++ b/spec/dsl/gemspec_spec/jars_and_poms_include_jars.xml @@ -5,8 +5,8 @@ 0.0.0 gemspec_spec - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/gemspec_spec/maven-tools.xml b/spec/dsl/gemspec_spec/maven-tools.xml index 9fdaa03..a1164f6 100644 --- a/spec/dsl/gemspec_spec/maven-tools.xml +++ b/spec/dsl/gemspec_spec/maven-tools.xml @@ -5,8 +5,8 @@ 0.0.0 BASEDIR - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/jars_and_poms.xml b/spec/dsl/profile_gemspec_spec/jars_and_poms.xml index 751a801..7e2bb11 100644 --- a/spec/dsl/profile_gemspec_spec/jars_and_poms.xml +++ b/spec/dsl/profile_gemspec_spec/jars_and_poms.xml @@ -6,8 +6,8 @@ profile_gemspec_spec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/jars_and_poms_include_jars.xml b/spec/dsl/profile_gemspec_spec/jars_and_poms_include_jars.xml index 3317832..3d0202e 100644 --- a/spec/dsl/profile_gemspec_spec/jars_and_poms_include_jars.xml +++ b/spec/dsl/profile_gemspec_spec/jars_and_poms_include_jars.xml @@ -6,8 +6,8 @@ profile_gemspec_spec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.xml b/spec/dsl/profile_gemspec_spec/maven-tools.xml index ea76688..c4e311f 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.xml +++ b/spec/dsl/profile_gemspec_spec/maven-tools.xml @@ -6,8 +6,8 @@ BASEDIR utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/no_gems.xml b/spec/dsl/profile_gemspec_spec/no_gems.xml index 6217594..666b354 100644 --- a/spec/dsl/profile_gemspec_spec/no_gems.xml +++ b/spec/dsl/profile_gemspec_spec/no_gems.xml @@ -6,8 +6,8 @@ profile_gemspec_spec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/snapshot.xml b/spec/dsl/profile_gemspec_spec/snapshot.xml index edc5def..33b9977 100644 --- a/spec/dsl/profile_gemspec_spec/snapshot.xml +++ b/spec/dsl/profile_gemspec_spec/snapshot.xml @@ -6,8 +6,8 @@ profile_gemspec_spec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/profile_gemspec_spec/unknown_license.xml b/spec/dsl/profile_gemspec_spec/unknown_license.xml index 5d28835..dc98a5c 100644 --- a/spec/dsl/profile_gemspec_spec/unknown_license.xml +++ b/spec/dsl/profile_gemspec_spec/unknown_license.xml @@ -6,8 +6,8 @@ profile_gemspec_spec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/extended.xml b/spec/dsl/project_gemspec_spec/extended.xml index 475fbfd..514ed0a 100644 --- a/spec/dsl/project_gemspec_spec/extended.xml +++ b/spec/dsl/project_gemspec_spec/extended.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms.xml b/spec/dsl/project_gemspec_spec/jars_and_poms.xml index 2694beb..8b99499 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml index f76f6ce..5f445db 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/maven-tools.xml b/spec/dsl/project_gemspec_spec/maven-tools.xml index 6781162..95b4447 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.xml +++ b/spec/dsl/project_gemspec_spec/maven-tools.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/no_gems.xml b/spec/dsl/project_gemspec_spec/no_gems.xml index 6a5b4e3..98997b4 100644 --- a/spec/dsl/project_gemspec_spec/no_gems.xml +++ b/spec/dsl/project_gemspec_spec/no_gems.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/profile.xml b/spec/dsl/project_gemspec_spec/profile.xml index b3a8a1e..cf013fd 100644 --- a/spec/dsl/project_gemspec_spec/profile.xml +++ b/spec/dsl/project_gemspec_spec/profile.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/snapshot.xml b/spec/dsl/project_gemspec_spec/snapshot.xml index 3b1da80..ad19533 100644 --- a/spec/dsl/project_gemspec_spec/snapshot.xml +++ b/spec/dsl/project_gemspec_spec/snapshot.xml @@ -26,8 +26,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/dsl/project_gemspec_spec/unknown_license.xml b/spec/dsl/project_gemspec_spec/unknown_license.xml index f912b66..f6d296b 100644 --- a/spec/dsl/project_gemspec_spec/unknown_license.xml +++ b/spec/dsl/project_gemspec_spec/unknown_license.xml @@ -24,8 +24,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile/pom.xml b/spec/gemfile/pom.xml index ff44ca1..68f545f 100644 --- a/spec/gemfile/pom.xml +++ b/spec/gemfile/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_include_jars/pom.xml b/spec/gemfile_include_jars/pom.xml index 3018ffb..57ab1b7 100644 --- a/spec/gemfile_include_jars/pom.xml +++ b/spec/gemfile_include_jars/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_access_to_model/pom.xml b/spec/gemfile_with_access_to_model/pom.xml index 6a0bb5a..d11216b 100644 --- a/spec/gemfile_with_access_to_model/pom.xml +++ b/spec/gemfile_with_access_to_model/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 1.5.0 diff --git a/spec/gemfile_with_custom_source/pom.xml b/spec/gemfile_with_custom_source/pom.xml index a609c30..de8a72c 100644 --- a/spec/gemfile_with_custom_source/pom.xml +++ b/spec/gemfile_with_custom_source/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml b/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml index 8d25a0e..34c3d04 100644 --- a/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml +++ b/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_extras/pom.xml b/spec/gemfile_with_extras/pom.xml index db0aeb1..c419f4d 100644 --- a/spec/gemfile_with_extras/pom.xml +++ b/spec/gemfile_with_extras/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 pom.xml true diff --git a/spec/gemfile_with_groups/pom.xml b/spec/gemfile_with_groups/pom.xml index 2b437cc..b0f96aa 100644 --- a/spec/gemfile_with_groups/pom.xml +++ b/spec/gemfile_with_groups/pom.xml @@ -17,8 +17,8 @@ gemfile_with_groups utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_groups_and_lockfile/pom.xml b/spec/gemfile_with_groups_and_lockfile/pom.xml index 83732b6..fd0ecdd 100644 --- a/spec/gemfile_with_groups_and_lockfile/pom.xml +++ b/spec/gemfile_with_groups_and_lockfile/pom.xml @@ -17,8 +17,8 @@ gemfile_with_groups_and_lockfile utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_jars_lock/pom.xml b/spec/gemfile_with_jars_lock/pom.xml index 20156fa..d72b96c 100644 --- a/spec/gemfile_with_jars_lock/pom.xml +++ b/spec/gemfile_with_jars_lock/pom.xml @@ -17,8 +17,8 @@ gemfile_with_jars_lock utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_lock/pom.xml b/spec/gemfile_with_lock/pom.xml index b1720a6..ce950bc 100644 --- a/spec/gemfile_with_lock/pom.xml +++ b/spec/gemfile_with_lock/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_path/pom.xml b/spec/gemfile_with_path/pom.xml index 1082890..94f8e84 100644 --- a/spec/gemfile_with_path/pom.xml +++ b/spec/gemfile_with_path/pom.xml @@ -17,8 +17,8 @@ gemfile_with_path utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_platforms/pom.xml b/spec/gemfile_with_platforms/pom.xml index 18b69d0..acba918 100644 --- a/spec/gemfile_with_platforms/pom.xml +++ b/spec/gemfile_with_platforms/pom.xml @@ -17,8 +17,8 @@ gemfile_with_platforms utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_source/pom.xml b/spec/gemfile_with_source/pom.xml index 6c550bc..33a0993 100644 --- a/spec/gemfile_with_source/pom.xml +++ b/spec/gemfile_with_source/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_source_and_custom_jarname/pom.xml b/spec/gemfile_with_source_and_custom_jarname/pom.xml index 1600efc..b181e18 100644 --- a/spec/gemfile_with_source_and_custom_jarname/pom.xml +++ b/spec/gemfile_with_source_and_custom_jarname/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_source_and_no_jar/pom.xml b/spec/gemfile_with_source_and_no_jar/pom.xml index 58282ab..d1b3659 100644 --- a/spec/gemfile_with_source_and_no_jar/pom.xml +++ b/spec/gemfile_with_source_and_no_jar/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_test_group/pom.xml b/spec/gemfile_with_test_group/pom.xml index 945a7cf..c663d84 100644 --- a/spec/gemfile_with_test_group/pom.xml +++ b/spec/gemfile_with_test_group/pom.xml @@ -8,8 +8,8 @@ gemfile_with_test_group utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_with_two_sources/pom.xml b/spec/gemfile_with_two_sources/pom.xml index d5686df..a8b873a 100644 --- a/spec/gemfile_with_two_sources/pom.xml +++ b/spec/gemfile_with_two_sources/pom.xml @@ -17,8 +17,8 @@ gemfile_with_two_sources utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemfile_without_gemspec/pom.xml b/spec/gemfile_without_gemspec/pom.xml index 9f57e72..f8273b7 100644 --- a/spec/gemfile_without_gemspec/pom.xml +++ b/spec/gemfile_without_gemspec/pom.xml @@ -17,8 +17,8 @@ gemfile_without_gemspec utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec/pom.xml b/spec/gemspec/pom.xml index 7cde42a..473e2c7 100644 --- a/spec/gemspec/pom.xml +++ b/spec/gemspec/pom.xml @@ -47,8 +47,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_in_profile/pom.xml b/spec/gemspec_in_profile/pom.xml index 8e1038c..4c6f2b1 100644 --- a/spec/gemspec_in_profile/pom.xml +++ b/spec/gemspec_in_profile/pom.xml @@ -41,8 +41,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_include_jars/pom.xml b/spec/gemspec_include_jars/pom.xml index 3018ffb..57ab1b7 100644 --- a/spec/gemspec_include_jars/pom.xml +++ b/spec/gemspec_include_jars/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_no_rubygems_repo/pom.xml b/spec/gemspec_no_rubygems_repo/pom.xml index 2c518af..a1755bb 100644 --- a/spec/gemspec_no_rubygems_repo/pom.xml +++ b/spec/gemspec_no_rubygems_repo/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_prerelease/pom.xml b/spec/gemspec_prerelease/pom.xml index 64792ef..c675f7b 100644 --- a/spec/gemspec_prerelease/pom.xml +++ b/spec/gemspec_prerelease/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_prerelease_snapshot/pom.xml b/spec/gemspec_prerelease_snapshot/pom.xml index 64792ef..c675f7b 100644 --- a/spec/gemspec_prerelease_snapshot/pom.xml +++ b/spec/gemspec_prerelease_snapshot/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_access_to_model/pom.xml b/spec/gemspec_with_access_to_model/pom.xml index 6a0bb5a..d11216b 100644 --- a/spec/gemspec_with_access_to_model/pom.xml +++ b/spec/gemspec_with_access_to_model/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 1.5.0 diff --git a/spec/gemspec_with_custom_source/pom.xml b/spec/gemspec_with_custom_source/pom.xml index a609c30..de8a72c 100644 --- a/spec/gemspec_with_custom_source/pom.xml +++ b/spec/gemspec_with_custom_source/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml b/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml index 8d25a0e..34c3d04 100644 --- a/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml +++ b/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_extras/pom.xml b/spec/gemspec_with_extras/pom.xml index db0aeb1..c419f4d 100644 --- a/spec/gemspec_with_extras/pom.xml +++ b/spec/gemspec_with_extras/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 pom.xml true diff --git a/spec/gemspec_with_jar_dependencies/pom.xml b/spec/gemspec_with_jar_dependencies/pom.xml index d273859..6ff324f 100644 --- a/spec/gemspec_with_jar_dependencies/pom.xml +++ b/spec/gemspec_with_jar_dependencies/pom.xml @@ -47,8 +47,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_jars_lock/pom.xml b/spec/gemspec_with_jars_lock/pom.xml index 0f659f6..552964b 100644 --- a/spec/gemspec_with_jars_lock/pom.xml +++ b/spec/gemspec_with_jars_lock/pom.xml @@ -47,8 +47,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_prereleased_dependency/pom.xml b/spec/gemspec_with_prereleased_dependency/pom.xml index 6dbe236..aecdb0e 100644 --- a/spec/gemspec_with_prereleased_dependency/pom.xml +++ b/spec/gemspec_with_prereleased_dependency/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_prereleased_dependency_and_no_repo/pom.xml b/spec/gemspec_with_prereleased_dependency_and_no_repo/pom.xml index 2c518af..a1755bb 100644 --- a/spec/gemspec_with_prereleased_dependency_and_no_repo/pom.xml +++ b/spec/gemspec_with_prereleased_dependency_and_no_repo/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_source/pom.xml b/spec/gemspec_with_source/pom.xml index f4efafe..189468e 100644 --- a/spec/gemspec_with_source/pom.xml +++ b/spec/gemspec_with_source/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_source_and_custom_jarname/pom.xml b/spec/gemspec_with_source_and_custom_jarname/pom.xml index 1600efc..b181e18 100644 --- a/spec/gemspec_with_source_and_custom_jarname/pom.xml +++ b/spec/gemspec_with_source_and_custom_jarname/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/gemspec_with_source_and_no_jar/pom.xml b/spec/gemspec_with_source_and_no_jar/pom.xml index 58282ab..d1b3659 100644 --- a/spec/gemspec_with_source_and_no_jar/pom.xml +++ b/spec/gemspec_with_source_and_no_jar/pom.xml @@ -30,8 +30,8 @@ utf-8 - 3.0.0 - 2.0.0 + 3.0.6 + 2.0.2 diff --git a/spec/mavenfile/Mavenfile b/spec/mavenfile/Mavenfile index 0db9b91..d99560e 100644 --- a/spec/mavenfile/Mavenfile +++ b/spec/mavenfile/Mavenfile @@ -265,7 +265,7 @@ plugin 'org.codehaus.mojo:exec-maven-plugin' do end plugin_management do - jruby_plugin( :gem, '3.0.0', :scope => :compile, + jruby_plugin( :gem, '3.0.6', :scope => :compile, :gems => { 'thread_safe' => '0.3.3', 'jdbc-mysql' => '5.1.30' diff --git a/spec/pom.xml b/spec/pom.xml index 2a1bd83..19158ad 100644 --- a/spec/pom.xml +++ b/spec/pom.xml @@ -317,7 +317,7 @@ org.jruby.maven gem-maven-plugin - 3.0.0 + 3.0.6 compile diff --git a/spec/pom_maven_alternative_style/pom.rb b/spec/pom_maven_alternative_style/pom.rb index 39e85c3..4496392 100644 --- a/spec/pom_maven_alternative_style/pom.rb +++ b/spec/pom_maven_alternative_style/pom.rb @@ -207,7 +207,7 @@ end overrides do - jruby_plugin( :gem, '3.0.0', :scope => :compile, + jruby_plugin( :gem, '3.0.6', :scope => :compile, :gems => { 'thread_safe' => '0.3.3', 'jdbc-mysql' => '5.1.30' diff --git a/spec/pom_maven_hash_style/pom.rb b/spec/pom_maven_hash_style/pom.rb index 90949df..d4bb41f 100644 --- a/spec/pom_maven_hash_style/pom.rb +++ b/spec/pom_maven_hash_style/pom.rb @@ -227,7 +227,7 @@ end plugin_management do - jruby_plugin( :gem, '3.0.0', :scope => :compile, + jruby_plugin( :gem, '3.0.6', :scope => :compile, :gems => { 'thread_safe' => '0.3.3', 'jdbc-mysql' => '5.1.30' diff --git a/spec/pom_maven_style/pom.rb b/spec/pom_maven_style/pom.rb index d7ca7ea..6eb3802 100644 --- a/spec/pom_maven_style/pom.rb +++ b/spec/pom_maven_style/pom.rb @@ -307,7 +307,7 @@ plugin_management do plugins do - jruby_plugin( :gem, '3.0.0') do + jruby_plugin( :gem, '3.0.6') do configuration( :scope => :compile, :gems => { 'thread_safe' => '0.3.3', From 3006d5b8b92bd2544f343d6f67a07da456e6204c Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:55:14 +0800 Subject: [PATCH 6/9] Update default plugin versions to latest compatible versions The previous versions don't work properly on modern Maven 3. Since Maven 3.9 is the only non EOL version, and Maven 3.9 is also EOL 9 months ago, this should not be a problem. Right now users need to override these from Mavenfile to get things to work and avoid warnings, which is a pain. --- lib/maven/tools/versions.rb | 8 ++++---- spec/gemfile_with_custom_source/pom.xml | 4 ++-- .../gemfile_with_custom_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemfile_with_source/pom.xml | 4 ++-- spec/gemfile_with_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemspec_with_custom_source/pom.xml | 4 ++-- .../gemspec_with_custom_source_and_custom_jarname/pom.xml | 4 ++-- spec/gemspec_with_source/pom.xml | 4 ++-- spec/gemspec_with_source_and_custom_jarname/pom.xml | 4 ++-- spec/pom_with_execute/pom.xml | 4 ++-- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/lib/maven/tools/versions.rb b/lib/maven/tools/versions.rb index 3b11ff2..a172a88 100644 --- a/lib/maven/tools/versions.rb +++ b/lib/maven/tools/versions.rb @@ -22,13 +22,13 @@ module Maven module Tools unless defined? VERSIONS VERSIONS = { - :jar_plugin => "2.4", - :clean_plugin => "2.4", + :clean_plugin => "3.5.0", + :jar_plugin => "3.5.0", :jruby_plugins => "3.0.6", :jruby9_plugins => "0.3.0", :bundler_version => "1.10.6", - :jruby_version => "9.1.2.0", - :polyglot_version => "0.1.18", + :jruby_version => "9.4.14.0", + :polyglot_version => "0.8.1", :mavengem_wagon => "2.0.2" }.freeze end diff --git a/spec/gemfile_with_custom_source/pom.xml b/spec/gemfile_with_custom_source/pom.xml index de8a72c..a38a228 100644 --- a/spec/gemfile_with_custom_source/pom.xml +++ b/spec/gemfile_with_custom_source/pom.xml @@ -72,7 +72,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -88,7 +88,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml b/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml index 34c3d04..706c5ca 100644 --- a/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml +++ b/spec/gemfile_with_custom_source_and_custom_jarname/pom.xml @@ -72,7 +72,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -88,7 +88,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemfile_with_source/pom.xml b/spec/gemfile_with_source/pom.xml index 33a0993..8983853 100644 --- a/spec/gemfile_with_source/pom.xml +++ b/spec/gemfile_with_source/pom.xml @@ -78,7 +78,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -94,7 +94,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemfile_with_source_and_custom_jarname/pom.xml b/spec/gemfile_with_source_and_custom_jarname/pom.xml index b181e18..32a842e 100644 --- a/spec/gemfile_with_source_and_custom_jarname/pom.xml +++ b/spec/gemfile_with_source_and_custom_jarname/pom.xml @@ -71,7 +71,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -87,7 +87,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemspec_with_custom_source/pom.xml b/spec/gemspec_with_custom_source/pom.xml index de8a72c..a38a228 100644 --- a/spec/gemspec_with_custom_source/pom.xml +++ b/spec/gemspec_with_custom_source/pom.xml @@ -72,7 +72,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -88,7 +88,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml b/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml index 34c3d04..706c5ca 100644 --- a/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml +++ b/spec/gemspec_with_custom_source_and_custom_jarname/pom.xml @@ -72,7 +72,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -88,7 +88,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemspec_with_source/pom.xml b/spec/gemspec_with_source/pom.xml index 189468e..ca8d11a 100644 --- a/spec/gemspec_with_source/pom.xml +++ b/spec/gemspec_with_source/pom.xml @@ -68,7 +68,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -84,7 +84,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/gemspec_with_source_and_custom_jarname/pom.xml b/spec/gemspec_with_source_and_custom_jarname/pom.xml index b181e18..32a842e 100644 --- a/spec/gemspec_with_source_and_custom_jarname/pom.xml +++ b/spec/gemspec_with_source_and_custom_jarname/pom.xml @@ -71,7 +71,7 @@ maven-jar-plugin - 2.4 + 3.5.0 prepare-package @@ -87,7 +87,7 @@ maven-clean-plugin - 2.4 + 3.5.0 diff --git a/spec/pom_with_execute/pom.xml b/spec/pom_with_execute/pom.xml index badceb3..da4c553 100644 --- a/spec/pom_with_execute/pom.xml +++ b/spec/pom_with_execute/pom.xml @@ -20,7 +20,7 @@ io.takari.polyglot polyglot-maven-plugin - 0.1.18 + 0.8.1 validate @@ -80,7 +80,7 @@ io.takari.polyglot polyglot-ruby - 0.1.18 + 0.8.1 From c0f29fb4474ca8ae1c791cfdb9bf5cd65af73e0c Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:28:09 +0800 Subject: [PATCH 7/9] Update and fix license generation ostruct is no longer a default gem; and it doesn't seem necessary when a normal struct will do --- Gemfile | 2 +- Rakefile | 27 +-- lib/maven/tools/licenses.rb | 186 +++++++++++------- maven-tools.gemspec | 4 +- pom.xml | 2 +- spec/dsl/gemspec_spec/maven-tools.gemspec | 4 +- spec/dsl/gemspec_spec/maven-tools.xml | 2 +- .../profile_gemspec_spec/maven-tools.gemspec | 4 +- spec/dsl/profile_gemspec_spec/maven-tools.xml | 2 +- spec/dsl/project_gemspec_spec/extended.xml | 4 +- .../project_gemspec_spec/jars_and_poms.xml | 4 +- .../jars_and_poms_include_jars.xml | 4 +- .../project_gemspec_spec/maven-tools.gemspec | 4 +- spec/dsl/project_gemspec_spec/maven-tools.xml | 6 +- spec/dsl/project_gemspec_spec/no_gems.xml | 4 +- spec/dsl/project_gemspec_spec/profile.xml | 6 +- spec/dsl/project_gemspec_spec/snapshot.xml | 4 +- spec/gemspec/pom.xml | 12 +- spec/gemspec_dependencies_spec.rb | 4 +- spec/gemspec_with_jar_dependencies/pom.xml | 12 +- spec/gemspec_with_jars_lock/pom.xml | 12 +- 21 files changed, 171 insertions(+), 138 deletions(-) diff --git a/Gemfile b/Gemfile index 79cd378..5bc0ea2 100644 --- a/Gemfile +++ b/Gemfile @@ -3,6 +3,6 @@ source 'https://rubygems.org' gemspec -gem "copyright-header", "1.0.8", :platform => :mri, :group => :copyright +gem "copyright-header", "1.0.22", :platform => :mri, :group => :copyright # vim: syntax=Ruby diff --git a/Rakefile b/Rakefile index fdcb7cf..7cfb0ff 100644 --- a/Rakefile +++ b/Rakefile @@ -1,32 +1,23 @@ #-*- mode: ruby -*- - task :default => [ :specs ] desc 'generate licenses data from internet' task :licenses do require 'open-uri' - require 'ostruct' - + require 'json' + File.open( 'lib/maven/tools/licenses.rb', 'w' ) do |f| - url = 'http://opensource.org' - f.puts "require 'ostruct'" + url = 'https://opensource.org' f.puts 'module Maven' f.puts ' module Tools' + f.puts ' SpdxLicenseMeta = Struct.new(:short, :name, :url, keyword_init: true)' f.puts ' LICENSES = {}' - open( url + '/licenses/alphabetical' ).each_line do |line| - - if line =~ /.*"\/licenses\// and line =~ /
  • / - l = OpenStruct.new - line.sub!( /.*"(\/licenses\/([^"]*))">/ ) do - l.url = "http://opensource.org#{$1}" - l.short = $1.sub( /\/licenses\//, '' ) - '' - end - line.sub!( /\ \(.*$/, '' ) - f.puts " LICENSES[ #{l.short.downcase.inspect} ] = OpenStruct.new :short => #{l.short.inspect}, :name => #{line.strip.inspect}, :url => #{l.url.inspect}" - end - end + JSON.parse(URI.open( url + '/api/licenses' ).read) + .select { |l| l["spdx_id"].size > 0 && l["name"].size > 0 } + .sort_by { |l| l["spdx_id"].downcase } + .each { |l| f.puts(" LICENSES[ #{l["spdx_id"].downcase.inspect} ] = SpdxLicenseMeta.new( short: #{l["spdx_id"].inspect}, name: #{l["name"].inspect}, url: #{l["_links"]["html"]["href"].inspect} ).freeze") } + f.puts ' LICENSES.freeze' f.puts ' end' f.puts 'end' diff --git a/lib/maven/tools/licenses.rb b/lib/maven/tools/licenses.rb index ab47e85..dd21f67 100644 --- a/lib/maven/tools/licenses.rb +++ b/lib/maven/tools/licenses.rb @@ -1,77 +1,121 @@ -require 'ostruct' module Maven module Tools + SpdxLicenseMeta = Struct.new(:short, :name, :url, keyword_init: true) LICENSES = {} - LICENSES[ "afl-3.0" ] = OpenStruct.new :short => "AFL-3.0", :name => "Academic Free License 3.0", :url => "http://opensource.org/licenses/AFL-3.0" - LICENSES[ "agpl-3.0" ] = OpenStruct.new :short => "AGPL-3.0", :name => "GNU Affero General Public License 3.0", :url => "http://opensource.org/licenses/AGPL-3.0" - LICENSES[ "apl-1.0" ] = OpenStruct.new :short => "APL-1.0", :name => "Adaptive Public License", :url => "http://opensource.org/licenses/APL-1.0" - LICENSES[ "apache-2.0" ] = OpenStruct.new :short => "Apache-2.0", :name => "Apache License 2.0", :url => "http://opensource.org/licenses/Apache-2.0" - LICENSES[ "apsl-2.0" ] = OpenStruct.new :short => "APSL-2.0", :name => "Apple Public Source License", :url => "http://opensource.org/licenses/APSL-2.0" - LICENSES[ "artistic-2.0" ] = OpenStruct.new :short => "Artistic-2.0", :name => "Artistic license 2.0", :url => "http://opensource.org/licenses/Artistic-2.0" - LICENSES[ "aal" ] = OpenStruct.new :short => "AAL", :name => "Attribution Assurance Licenses", :url => "http://opensource.org/licenses/AAL" - LICENSES[ "bsd-3-clause" ] = OpenStruct.new :short => "BSD-3-Clause", :name => "BSD 3-Clause \"New\" or \"Revised\" License", :url => "http://opensource.org/licenses/BSD-3-Clause" - LICENSES[ "bsd-2-clause" ] = OpenStruct.new :short => "BSD-2-Clause", :name => "BSD 2-Clause \"Simplified\" or \"FreeBSD\" License", :url => "http://opensource.org/licenses/BSD-2-Clause" - LICENSES[ "bsl-1.0" ] = OpenStruct.new :short => "BSL-1.0", :name => "Boost Software License", :url => "http://opensource.org/licenses/BSL-1.0" - LICENSES[ "cecill-2.1" ] = OpenStruct.new :short => "CECILL-2.1", :name => "CeCILL License 2.1", :url => "http://opensource.org/licenses/CECILL-2.1" - LICENSES[ "catosl-1.1" ] = OpenStruct.new :short => "CATOSL-1.1", :name => "Computer Associates Trusted Open Source License 1.1", :url => "http://opensource.org/licenses/CATOSL-1.1" - LICENSES[ "cddl-1.0" ] = OpenStruct.new :short => "CDDL-1.0", :name => "Common Development and Distribution License 1.0", :url => "http://opensource.org/licenses/CDDL-1.0" - LICENSES[ "cpal-1.0" ] = OpenStruct.new :short => "CPAL-1.0", :name => "Common Public Attribution License 1.0", :url => "http://opensource.org/licenses/CPAL-1.0" - LICENSES[ "cua-opl-1.0" ] = OpenStruct.new :short => "CUA-OPL-1.0", :name => "CUA Office Public License Version 1.0", :url => "http://opensource.org/licenses/CUA-OPL-1.0" - LICENSES[ "eudatagrid" ] = OpenStruct.new :short => "EUDatagrid", :name => "EU DataGrid Software License", :url => "http://opensource.org/licenses/EUDatagrid" - LICENSES[ "epl-1.0" ] = OpenStruct.new :short => "EPL-1.0", :name => "Eclipse Public License 1.0", :url => "http://opensource.org/licenses/EPL-1.0" - LICENSES[ "ecl-2.0" ] = OpenStruct.new :short => "ECL-2.0", :name => "Educational Community License, Version 2.0", :url => "http://opensource.org/licenses/ECL-2.0" - LICENSES[ "efl-2.0" ] = OpenStruct.new :short => "EFL-2.0", :name => "Eiffel Forum License V2.0", :url => "http://opensource.org/licenses/EFL-2.0" - LICENSES[ "entessa" ] = OpenStruct.new :short => "Entessa", :name => "Entessa Public License", :url => "http://opensource.org/licenses/Entessa" - LICENSES[ "eupl-1.1" ] = OpenStruct.new :short => "EUPL-1.1", :name => "European Union Public License, Version 1.1", :url => "http://opensource.org/licenses/EUPL-1.1" - LICENSES[ "fair" ] = OpenStruct.new :short => "Fair", :name => "Fair License", :url => "http://opensource.org/licenses/Fair" - LICENSES[ "frameworx-1.0" ] = OpenStruct.new :short => "Frameworx-1.0", :name => "Frameworx License", :url => "http://opensource.org/licenses/Frameworx-1.0" - LICENSES[ "agpl-3.0" ] = OpenStruct.new :short => "AGPL-3.0", :name => "GNU Affero General Public License v3", :url => "http://opensource.org/licenses/AGPL-3.0" - LICENSES[ "gpl-2.0" ] = OpenStruct.new :short => "GPL-2.0", :name => "GNU General Public License version 2.0", :url => "http://opensource.org/licenses/GPL-2.0" - LICENSES[ "gpl-3.0" ] = OpenStruct.new :short => "GPL-3.0", :name => "GNU General Public License version 3.0", :url => "http://opensource.org/licenses/GPL-3.0" - LICENSES[ "lgpl-2.1" ] = OpenStruct.new :short => "LGPL-2.1", :name => "GNU Library or \"Lesser\" General Public License version 2.1", :url => "http://opensource.org/licenses/LGPL-2.1" - LICENSES[ "lgpl-3.0" ] = OpenStruct.new :short => "LGPL-3.0", :name => "GNU Library or \"Lesser\" General Public License version 3.0", :url => "http://opensource.org/licenses/LGPL-3.0" - LICENSES[ "hpnd" ] = OpenStruct.new :short => "HPND", :name => "Historical Permission Notice and Disclaimer", :url => "http://opensource.org/licenses/HPND" - LICENSES[ "ipl-1.0" ] = OpenStruct.new :short => "IPL-1.0", :name => "IBM Public License 1.0", :url => "http://opensource.org/licenses/IPL-1.0" - LICENSES[ "ipa" ] = OpenStruct.new :short => "IPA", :name => "IPA Font License", :url => "http://opensource.org/licenses/IPA" - LICENSES[ "isc" ] = OpenStruct.new :short => "ISC", :name => "ISC License", :url => "http://opensource.org/licenses/ISC" - LICENSES[ "lppl-1.3c" ] = OpenStruct.new :short => "LPPL-1.3c", :name => "LaTeX Project Public License 1.3c", :url => "http://opensource.org/licenses/LPPL-1.3c" - LICENSES[ "lpl-1.02" ] = OpenStruct.new :short => "LPL-1.02", :name => "Lucent Public License Version 1.02", :url => "http://opensource.org/licenses/LPL-1.02" - LICENSES[ "miros" ] = OpenStruct.new :short => "MirOS", :name => "MirOS Licence", :url => "http://opensource.org/licenses/MirOS" - LICENSES[ "ms-pl" ] = OpenStruct.new :short => "MS-PL", :name => "Microsoft Public License", :url => "http://opensource.org/licenses/MS-PL" - LICENSES[ "ms-rl" ] = OpenStruct.new :short => "MS-RL", :name => "Microsoft Reciprocal License", :url => "http://opensource.org/licenses/MS-RL" - LICENSES[ "mit" ] = OpenStruct.new :short => "MIT", :name => "MIT license", :url => "http://opensource.org/licenses/MIT" - LICENSES[ "motosoto" ] = OpenStruct.new :short => "Motosoto", :name => "Motosoto License", :url => "http://opensource.org/licenses/Motosoto" - LICENSES[ "mpl-2.0" ] = OpenStruct.new :short => "MPL-2.0", :name => "Mozilla Public License 2.0", :url => "http://opensource.org/licenses/MPL-2.0" - LICENSES[ "multics" ] = OpenStruct.new :short => "Multics", :name => "Multics License", :url => "http://opensource.org/licenses/Multics" - LICENSES[ "nasa-1.3" ] = OpenStruct.new :short => "NASA-1.3", :name => "NASA Open Source Agreement 1.3", :url => "http://opensource.org/licenses/NASA-1.3" - LICENSES[ "ntp" ] = OpenStruct.new :short => "NTP", :name => "NTP License", :url => "http://opensource.org/licenses/NTP" - LICENSES[ "naumen" ] = OpenStruct.new :short => "Naumen", :name => "Naumen Public License", :url => "http://opensource.org/licenses/Naumen" - LICENSES[ "ngpl" ] = OpenStruct.new :short => "NGPL", :name => "Nethack General Public License", :url => "http://opensource.org/licenses/NGPL" - LICENSES[ "nokia" ] = OpenStruct.new :short => "Nokia", :name => "Nokia Open Source License", :url => "http://opensource.org/licenses/Nokia" - LICENSES[ "nposl-3.0" ] = OpenStruct.new :short => "NPOSL-3.0", :name => "Non-Profit Open Software License 3.0", :url => "http://opensource.org/licenses/NPOSL-3.0" - LICENSES[ "oclc-2.0" ] = OpenStruct.new :short => "OCLC-2.0", :name => "OCLC Research Public License 2.0", :url => "http://opensource.org/licenses/OCLC-2.0" - LICENSES[ "ofl-1.1" ] = OpenStruct.new :short => "OFL-1.1", :name => "Open Font License 1.1", :url => "http://opensource.org/licenses/OFL-1.1" - LICENSES[ "ogtsl" ] = OpenStruct.new :short => "OGTSL", :name => "Open Group Test Suite License", :url => "http://opensource.org/licenses/OGTSL" - LICENSES[ "osl-3.0" ] = OpenStruct.new :short => "OSL-3.0", :name => "Open Software License 3.0", :url => "http://opensource.org/licenses/OSL-3.0" - LICENSES[ "php-3.0" ] = OpenStruct.new :short => "PHP-3.0", :name => "PHP License 3.0", :url => "http://opensource.org/licenses/PHP-3.0" - LICENSES[ "postgresql" ] = OpenStruct.new :short => "PostgreSQL", :name => "The PostgreSQL License", :url => "http://opensource.org/licenses/PostgreSQL" - LICENSES[ "python-2.0" ] = OpenStruct.new :short => "Python-2.0", :name => "Python License", :url => "http://opensource.org/licenses/Python-2.0" - LICENSES[ "cnri-python" ] = OpenStruct.new :short => "CNRI-Python", :name => "CNRI Python license", :url => "http://opensource.org/licenses/CNRI-Python" - LICENSES[ "qpl-1.0" ] = OpenStruct.new :short => "QPL-1.0", :name => "Q Public License", :url => "http://opensource.org/licenses/QPL-1.0" - LICENSES[ "rpsl-1.0" ] = OpenStruct.new :short => "RPSL-1.0", :name => "RealNetworks Public Source License V1.0", :url => "http://opensource.org/licenses/RPSL-1.0" - LICENSES[ "rpl-1.5" ] = OpenStruct.new :short => "RPL-1.5", :name => "Reciprocal Public License 1.5", :url => "http://opensource.org/licenses/RPL-1.5" - LICENSES[ "rscpl" ] = OpenStruct.new :short => "RSCPL", :name => "Ricoh Source Code Public License", :url => "http://opensource.org/licenses/RSCPL" - LICENSES[ "simpl-2.0" ] = OpenStruct.new :short => "SimPL-2.0", :name => "Simple Public License 2.0", :url => "http://opensource.org/licenses/SimPL-2.0" - LICENSES[ "sleepycat" ] = OpenStruct.new :short => "Sleepycat", :name => "Sleepycat License", :url => "http://opensource.org/licenses/Sleepycat" - LICENSES[ "spl-1.0" ] = OpenStruct.new :short => "SPL-1.0", :name => "Sun Public License 1.0", :url => "http://opensource.org/licenses/SPL-1.0" - LICENSES[ "watcom-1.0" ] = OpenStruct.new :short => "Watcom-1.0", :name => "Sybase Open Watcom Public License 1.0", :url => "http://opensource.org/licenses/Watcom-1.0" - LICENSES[ "ncsa" ] = OpenStruct.new :short => "NCSA", :name => "University of Illinois/NCSA Open Source License", :url => "http://opensource.org/licenses/NCSA" - LICENSES[ "vsl-1.0" ] = OpenStruct.new :short => "VSL-1.0", :name => "Vovida Software License v. 1.0", :url => "http://opensource.org/licenses/VSL-1.0" - LICENSES[ "w3c" ] = OpenStruct.new :short => "W3C", :name => "W3C License", :url => "http://opensource.org/licenses/W3C" - LICENSES[ "wxwindows" ] = OpenStruct.new :short => "WXwindows", :name => "wxWindows Library License", :url => "http://opensource.org/licenses/WXwindows" - LICENSES[ "xnet" ] = OpenStruct.new :short => "Xnet", :name => "X.Net License", :url => "http://opensource.org/licenses/Xnet" - LICENSES[ "zpl-2.0" ] = OpenStruct.new :short => "ZPL-2.0", :name => "Zope Public License 2.0", :url => "http://opensource.org/licenses/ZPL-2.0" - LICENSES[ "zlib" ] = OpenStruct.new :short => "Zlib", :name => "zlib/libpng license", :url => "http://opensource.org/licenses/Zlib" + LICENSES[ "0bsd" ] = SpdxLicenseMeta.new( short: "0BSD", name: "Zero-Clause BSD", url: "https://opensource.org/license/0bsd" ).freeze + LICENSES[ "aal" ] = SpdxLicenseMeta.new( short: "AAL", name: "Attribution Assurance License", url: "https://opensource.org/license/attribution-php" ).freeze + LICENSES[ "afl-3.0" ] = SpdxLicenseMeta.new( short: "AFL-3.0", name: "Academic Free License v. 3.0", url: "https://opensource.org/license/afl-3-0-php" ).freeze + LICENSES[ "agpl-3.0-only" ] = SpdxLicenseMeta.new( short: "AGPL-3.0-only", name: "GNU Affero General Public License version 3", url: "https://opensource.org/license/agpl-v3" ).freeze + LICENSES[ "apache-1.1" ] = SpdxLicenseMeta.new( short: "Apache-1.1", name: "Apache Software License, version 1.1", url: "https://opensource.org/license/apache-1-1" ).freeze + LICENSES[ "apache-2.0" ] = SpdxLicenseMeta.new( short: "Apache-2.0", name: "Apache License, Version 2.0", url: "https://opensource.org/license/apache-2-0" ).freeze + LICENSES[ "apl-1.0" ] = SpdxLicenseMeta.new( short: "APL-1.0", name: "Adaptive Public License 1.0", url: "https://opensource.org/license/apl1-0-php" ).freeze + LICENSES[ "apsl-2.0" ] = SpdxLicenseMeta.new( short: "APSL-2.0", name: "Apple Public Source License 2.0", url: "https://opensource.org/license/apsl-2-0" ).freeze + LICENSES[ "artistic-1.0" ] = SpdxLicenseMeta.new( short: "Artistic-1.0", name: "Artistic License 1.0", url: "https://opensource.org/license/artistic-1-0" ).freeze + LICENSES[ "artistic-1.0-perl" ] = SpdxLicenseMeta.new( short: "Artistic-1.0-Perl", name: "Artistic License (Perl) 1.0", url: "https://opensource.org/license/artistic-perl-1-0-2" ).freeze + LICENSES[ "artistic-2.0" ] = SpdxLicenseMeta.new( short: "Artistic-2.0", name: "Artistic License 2.0", url: "https://opensource.org/license/artistic-2-0" ).freeze + LICENSES[ "blueoak-1.0.0" ] = SpdxLicenseMeta.new( short: "BlueOak-1.0.0", name: "Blue Oak Model License", url: "https://opensource.org/license/blue-oak-model-license" ).freeze + LICENSES[ "bsd-1-clause" ] = SpdxLicenseMeta.new( short: "BSD-1-Clause", name: "1-clause BSD License", url: "https://opensource.org/license/bsd-1-clause" ).freeze + LICENSES[ "bsd-2-clause" ] = SpdxLicenseMeta.new( short: "BSD-2-Clause", name: "The 2-Clause BSD License", url: "https://opensource.org/license/bsd-2-clause" ).freeze + LICENSES[ "bsd-2-clause-patent" ] = SpdxLicenseMeta.new( short: "BSD-2-Clause-Patent", name: "BSD+Patent", url: "https://opensource.org/license/bsdpluspatent" ).freeze + LICENSES[ "bsd-3-clause" ] = SpdxLicenseMeta.new( short: "BSD-3-Clause", name: "The 3-Clause BSD License", url: "https://opensource.org/license/bsd-3-clause" ).freeze + LICENSES[ "bsd-3-clause-lbnl" ] = SpdxLicenseMeta.new( short: "BSD-3-Clause-LBNL", name: "Lawrence Berkeley National Labs BSD Variant License", url: "https://opensource.org/license/bsd-3-clause-lbnl" ).freeze + LICENSES[ "bsd-3-clause-open-mpi" ] = SpdxLicenseMeta.new( short: "BSD-3-Clause-Open-MPI", name: "BSD-3-Clause-Open-MPI", url: "https://opensource.org/license/bsd-3-clause-open-mpi" ).freeze + LICENSES[ "bsl-1.0" ] = SpdxLicenseMeta.new( short: "BSL-1.0", name: "Boost Software License 1.0", url: "https://opensource.org/license/bsl-1-0" ).freeze + LICENSES[ "cal-1.0" ] = SpdxLicenseMeta.new( short: "CAL-1.0", name: "Cryptographic Autonomy License", url: "https://opensource.org/license/cal-1-0" ).freeze + LICENSES[ "catosl-1.1" ] = SpdxLicenseMeta.new( short: "CATOSL-1.1", name: "Computer Associates Trusted Open Source License 1.1", url: "https://opensource.org/license/ca-tosl1-1-php" ).freeze + LICENSES[ "cddl-1.0" ] = SpdxLicenseMeta.new( short: "CDDL-1.0", name: "Common Development and Distribution License 1.0", url: "https://opensource.org/license/cddl-1-0" ).freeze + LICENSES[ "cddl-1.1" ] = SpdxLicenseMeta.new( short: "CDDL-1.1", name: "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)", url: "https://opensource.org/license/cddl-1-1" ).freeze + LICENSES[ "cecill-2.1" ] = SpdxLicenseMeta.new( short: "CECILL-2.1", name: "Cea Cnrs Inria Logiciel Libre License, version 2.1", url: "https://opensource.org/license/cecill-2-1" ).freeze + LICENSES[ "cern-ohl-p-2.0" ] = SpdxLicenseMeta.new( short: "CERN-OHL-P-2.0", name: "CERN Open Hardware Licence Version 2 - Permissive", url: "https://opensource.org/license/cern-ohl-p" ).freeze + LICENSES[ "cern-ohl-s-2.0 " ] = SpdxLicenseMeta.new( short: "CERN-OHL-S-2.0 ", name: "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", url: "https://opensource.org/license/cern-ohl-s" ).freeze + LICENSES[ "cern-ohl-w-2.0" ] = SpdxLicenseMeta.new( short: "CERN-OHL-W-2.0", name: "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", url: "https://opensource.org/license/cern-ohl-w" ).freeze + LICENSES[ "cnri-python" ] = SpdxLicenseMeta.new( short: "CNRI-Python", name: "The CNRI portion of the multi-part Python License", url: "https://opensource.org/license/cnri-python" ).freeze + LICENSES[ "cpal-1.0" ] = SpdxLicenseMeta.new( short: "CPAL-1.0", name: "Common Public Attribution License Version 1.0", url: "https://opensource.org/license/cpal-1-0" ).freeze + LICENSES[ "cpl-1.0" ] = SpdxLicenseMeta.new( short: "CPL-1.0", name: "Common Public License Version 1.0", url: "https://opensource.org/license/cpl1-0-txt" ).freeze + LICENSES[ "cua-opl-1.0" ] = SpdxLicenseMeta.new( short: "CUA-OPL-1.0", name: "CUA Office Public License", url: "https://opensource.org/license/cuaoffice-php" ).freeze + LICENSES[ "ecl-1.0" ] = SpdxLicenseMeta.new( short: "ECL-1.0", name: "Educational Community License, Version 1.0", url: "https://opensource.org/license/ecl-1-0" ).freeze + LICENSES[ "ecl-2.0" ] = SpdxLicenseMeta.new( short: "ECL-2.0", name: "Educational Community License, Version 2.0", url: "https://opensource.org/license/ecl-2-0" ).freeze + LICENSES[ "ecos-2.0" ] = SpdxLicenseMeta.new( short: "eCos-2.0", name: "eCos License version 2.0", url: "https://opensource.org/license/ecos-2-0" ).freeze + LICENSES[ "efl-1.0" ] = SpdxLicenseMeta.new( short: "EFL-1.0", name: "Eiffel Forum License, version 1", url: "https://opensource.org/license/efl-1-0" ).freeze + LICENSES[ "efl-2.0" ] = SpdxLicenseMeta.new( short: "EFL-2.0", name: "Eiffel Forum License, Version 2", url: "https://opensource.org/license/ver2_eiffel-php" ).freeze + LICENSES[ "entessa" ] = SpdxLicenseMeta.new( short: "Entessa", name: "Entessa Public License Version. 1.0", url: "https://opensource.org/license/entessa" ).freeze + LICENSES[ "epl-1.0" ] = SpdxLicenseMeta.new( short: "EPL-1.0", name: "Eclipse Public License -v 1.0", url: "https://opensource.org/license/epl-1-0" ).freeze + LICENSES[ "epl-2.0" ] = SpdxLicenseMeta.new( short: "EPL-2.0", name: "Eclipse Public License version 2.0", url: "https://opensource.org/license/epl-2-0" ).freeze + LICENSES[ "eudatagrid" ] = SpdxLicenseMeta.new( short: "EUDatagrid", name: "EU DataGrid Software License", url: "https://opensource.org/license/eudatagrid-php" ).freeze + LICENSES[ "eupl-1.1" ] = SpdxLicenseMeta.new( short: "EUPL-1.1", name: "The European Union Public License, version 1.1", url: "https://opensource.org/license/eupl-1-1" ).freeze + LICENSES[ "eupl-1.2" ] = SpdxLicenseMeta.new( short: "EUPL-1.2", name: "European Union Public Licence, version 1.2", url: "https://opensource.org/license/eupl-1-2" ).freeze + LICENSES[ "fair" ] = SpdxLicenseMeta.new( short: "Fair", name: "Fair License", url: "https://opensource.org/license/fair" ).freeze + LICENSES[ "frameworx-1.0" ] = SpdxLicenseMeta.new( short: "Frameworx-1.0", name: "Frameworx License 1.0", url: "https://opensource.org/license/frameworx-php" ).freeze + LICENSES[ "gpl-2.0" ] = SpdxLicenseMeta.new( short: "GPL-2.0", name: "GNU General Public License version 2", url: "https://opensource.org/license/gpl-2-0" ).freeze + LICENSES[ "gpl-3.0-only" ] = SpdxLicenseMeta.new( short: "GPL-3.0-only", name: "GNU General Public License version 3", url: "https://opensource.org/license/gpl-3-0" ).freeze + LICENSES[ "hpnd" ] = SpdxLicenseMeta.new( short: "HPND", name: "Historical Permission Notice and Disclaimer", url: "https://opensource.org/license/historical-php" ).freeze + LICENSES[ "icu" ] = SpdxLicenseMeta.new( short: "ICU", name: "ICU License", url: "https://opensource.org/license/icu-license" ).freeze + LICENSES[ "intel" ] = SpdxLicenseMeta.new( short: "Intel", name: "Intel Open Source License", url: "https://opensource.org/license/intel" ).freeze + LICENSES[ "ipa" ] = SpdxLicenseMeta.new( short: "IPA", name: "IPA Font License", url: "https://opensource.org/license/ipafont-html" ).freeze + LICENSES[ "ipl-1.0" ] = SpdxLicenseMeta.new( short: "IPL-1.0", name: "IBM Public License Version 1.0", url: "https://opensource.org/license/ibmpl-php" ).freeze + LICENSES[ "isc" ] = SpdxLicenseMeta.new( short: "ISC", name: "ISC License", url: "https://opensource.org/license/isc-license-txt" ).freeze + LICENSES[ "jam" ] = SpdxLicenseMeta.new( short: "Jam", name: "JAM License", url: "https://opensource.org/license/jam" ).freeze + LICENSES[ "lgpl-2.0-only" ] = SpdxLicenseMeta.new( short: "LGPL-2.0-only", name: "GNU Library General Public License version 2", url: "https://opensource.org/license/lgpl-2-0" ).freeze + LICENSES[ "lgpl-2.1" ] = SpdxLicenseMeta.new( short: "LGPL-2.1", name: "GNU Lesser General Public License version 2.1", url: "https://opensource.org/license/lgpl-2-1" ).freeze + LICENSES[ "lgpl-3.0-only" ] = SpdxLicenseMeta.new( short: "LGPL-3.0-only", name: "GNU Lesser General Public License version 3", url: "https://opensource.org/license/lgpl-3-0" ).freeze + LICENSES[ "liliq-p-1.1" ] = SpdxLicenseMeta.new( short: "LiLiQ-P-1.1", name: "Licence Libre du Québec – Permissive version 1.1", url: "https://opensource.org/license/liliq-p-1-1" ).freeze + LICENSES[ "liliq-r-1.1" ] = SpdxLicenseMeta.new( short: "LiLiQ-R-1.1", name: "Licence Libre du Québec – Réciprocité version 1.1", url: "https://opensource.org/license/liliq-r-1-1" ).freeze + LICENSES[ "liliq-rplus-1.1" ] = SpdxLicenseMeta.new( short: "LiLiQ-Rplus-1.1", name: "Licence Libre du Québec – Réciprocité forte version 1.1", url: "https://opensource.org/license/liliq-rplus-1-1" ).freeze + LICENSES[ "lpl-1.0" ] = SpdxLicenseMeta.new( short: "LPL-1.0", name: "Lucent Public License, Plan 9, version 1.0", url: "https://opensource.org/license/lpl-1-0" ).freeze + LICENSES[ "lpl-1.02" ] = SpdxLicenseMeta.new( short: "LPL-1.02", name: "Lucent Public License Version 1.02", url: "https://opensource.org/license/lucent1-02-php" ).freeze + LICENSES[ "lppl-1.3c" ] = SpdxLicenseMeta.new( short: "LPPL-1.3c", name: "LaTeX Project Public License, Version 1.3c", url: "https://opensource.org/license/lppl" ).freeze + LICENSES[ "miros" ] = SpdxLicenseMeta.new( short: "MirOS", name: "MirOS Licence", url: "https://opensource.org/license/miros-html" ).freeze + LICENSES[ "mit" ] = SpdxLicenseMeta.new( short: "MIT", name: "The MIT License", url: "https://opensource.org/license/mit" ).freeze + LICENSES[ "mit-0" ] = SpdxLicenseMeta.new( short: "MIT-0", name: "MIT No Attribution License", url: "https://opensource.org/license/mit-0" ).freeze + LICENSES[ "mit-cmu" ] = SpdxLicenseMeta.new( short: "MIT-CMU", name: "CMU License", url: "https://opensource.org/license/cmu-license" ).freeze + LICENSES[ "motosoto" ] = SpdxLicenseMeta.new( short: "Motosoto", name: "Motosoto Open Source License", url: "https://opensource.org/license/motosoto" ).freeze + LICENSES[ "mpl-1.0" ] = SpdxLicenseMeta.new( short: "MPL-1.0", name: "Mozilla Public License, version 1.0", url: "https://opensource.org/license/mpl-1-0" ).freeze + LICENSES[ "mpl-1.1" ] = SpdxLicenseMeta.new( short: "MPL-1.1", name: "Mozilla Public License 1.1", url: "https://opensource.org/license/mpl-1-1" ).freeze + LICENSES[ "mpl-2.0" ] = SpdxLicenseMeta.new( short: "MPL-2.0", name: "Mozilla Public License 2.0", url: "https://opensource.org/license/mpl-2-0" ).freeze + LICENSES[ "ms-pl" ] = SpdxLicenseMeta.new( short: "MS-PL", name: "Microsoft Public License", url: "https://opensource.org/license/ms-pl-html" ).freeze + LICENSES[ "ms-rl" ] = SpdxLicenseMeta.new( short: "MS-RL", name: "Microsoft Reciprocal License", url: "https://opensource.org/license/ms-rl-html" ).freeze + LICENSES[ "mulanpsl-2.0" ] = SpdxLicenseMeta.new( short: "MulanPSL-2.0", name: "Mulan Permissive Software License v2", url: "https://opensource.org/license/mulanpsl-2-0" ).freeze + LICENSES[ "multics" ] = SpdxLicenseMeta.new( short: "Multics", name: "Multics License", url: "https://opensource.org/license/multics-txt" ).freeze + LICENSES[ "nasa-1.3" ] = SpdxLicenseMeta.new( short: "NASA-1.3", name: "NASA Open Source Agreement v1.3", url: "https://opensource.org/license/nasa1-3-php" ).freeze + LICENSES[ "naumen" ] = SpdxLicenseMeta.new( short: "Naumen", name: "NAUMEN Public License", url: "https://opensource.org/license/naumen-php" ).freeze + LICENSES[ "ncsa" ] = SpdxLicenseMeta.new( short: "NCSA", name: "The University of Illinois/NCSA Open Source License", url: "https://opensource.org/license/uoi-ncsa-php" ).freeze + LICENSES[ "ngpl" ] = SpdxLicenseMeta.new( short: "NGPL", name: "The Nethack General Public License", url: "https://opensource.org/license/nethack" ).freeze + LICENSES[ "nokia" ] = SpdxLicenseMeta.new( short: "NOKIA", name: "Nokia Open Source License Version 1.0a", url: "https://opensource.org/license/nokia" ).freeze + LICENSES[ "nposl-3.0" ] = SpdxLicenseMeta.new( short: "NPOSL-3.0", name: "Non-Profit Open Software License version 3.0", url: "https://opensource.org/license/nposl-3-0" ).freeze + LICENSES[ "ntp" ] = SpdxLicenseMeta.new( short: "NTP", name: "NTP License", url: "https://opensource.org/license/ntp-license-php" ).freeze + LICENSES[ "ofl-1.1" ] = SpdxLicenseMeta.new( short: "OFL-1.1", name: "SIL OPEN FONT LICENSE", url: "https://opensource.org/license/ofl-1-1" ).freeze + LICENSES[ "ogtsl" ] = SpdxLicenseMeta.new( short: "OGTSL", name: "Open Group Test Suite License", url: "https://opensource.org/license/opengroup-php" ).freeze + LICENSES[ "oldap-2.8" ] = SpdxLicenseMeta.new( short: "OLDAP-2.8", name: "OpenLDAP Public License Version 2.8", url: "https://opensource.org/license/oldap-2-8" ).freeze + LICENSES[ "olfl-1.3" ] = SpdxLicenseMeta.new( short: "OLFL-1.3", name: "Open Logistics Foundation License v1.3", url: "https://opensource.org/license/olfl-1-3" ).freeze + LICENSES[ "oset-pl-2.1" ] = SpdxLicenseMeta.new( short: "OSET-PL-2.1", name: "OSET Public License version 2.1", url: "https://opensource.org/license/opl-2-1" ).freeze + LICENSES[ "osl-1.0" ] = SpdxLicenseMeta.new( short: "OSL-1.0", name: "Open Software License, version 1.0", url: "https://opensource.org/license/osl-1-0" ).freeze + LICENSES[ "osl-2.1" ] = SpdxLicenseMeta.new( short: "OSL-2.1", name: "Open Software License 2.1", url: "https://opensource.org/license/osl-2-1" ).freeze + LICENSES[ "osl-3.0" ] = SpdxLicenseMeta.new( short: "OSL-3.0", name: "The Open Software License 3.0", url: "https://opensource.org/license/osl-3-0-php" ).freeze + LICENSES[ "php-3.0" ] = SpdxLicenseMeta.new( short: "PHP-3.0", name: "PHP License 3.0", url: "https://opensource.org/license/php-3-0" ).freeze + LICENSES[ "php-3.01" ] = SpdxLicenseMeta.new( short: "PHP-3.01", name: "PHP License 3.01", url: "https://opensource.org/license/php-3-01" ).freeze + LICENSES[ "postgresql" ] = SpdxLicenseMeta.new( short: "PostgreSQL", name: "The PostgreSQL License", url: "https://opensource.org/license/postgresql" ).freeze + LICENSES[ "psf-2.0" ] = SpdxLicenseMeta.new( short: "PSF-2.0", name: "Python License, Version 2", url: "https://opensource.org/license/python-2-0" ).freeze + LICENSES[ "qpl-1.0" ] = SpdxLicenseMeta.new( short: "QPL-1.0", name: "The Q Public License Version", url: "https://opensource.org/license/qpl-1-0" ).freeze + LICENSES[ "rpl-1.1" ] = SpdxLicenseMeta.new( short: "RPL-1.1", name: "Reciprocal Public License, version 1.1", url: "https://opensource.org/license/rpl-1-1" ).freeze + LICENSES[ "rpl-1.5" ] = SpdxLicenseMeta.new( short: "RPL-1.5", name: "Reciprocal Public License 1.5", url: "https://opensource.org/license/rpl-1-5" ).freeze + LICENSES[ "rpsl-1.0" ] = SpdxLicenseMeta.new( short: "RPSL-1.0", name: "RealNetworks Public Source License Version 1.0", url: "https://opensource.org/license/real-php" ).freeze + LICENSES[ "rscpl" ] = SpdxLicenseMeta.new( short: "RSCPL", name: "The Ricoh Source Code Public License", url: "https://opensource.org/license/ricohpl-php" ).freeze + LICENSES[ "simpl-2.0" ] = SpdxLicenseMeta.new( short: "SimPL-2.0", name: "Simple Public License", url: "https://opensource.org/license/simpl-2-0-html" ).freeze + LICENSES[ "sissl" ] = SpdxLicenseMeta.new( short: "SISSL", name: "Sun Industry Standards Source License", url: "https://opensource.org/license/sissl" ).freeze + LICENSES[ "sleepycat" ] = SpdxLicenseMeta.new( short: "Sleepycat", name: "The Sleepycat License", url: "https://opensource.org/license/sleepycat-php" ).freeze + LICENSES[ "spl-1.0" ] = SpdxLicenseMeta.new( short: "SPL-1.0", name: "Sun Public License, Version 1.0", url: "https://opensource.org/license/sunpublic-php" ).freeze + LICENSES[ "ucl-1.0" ] = SpdxLicenseMeta.new( short: "UCL-1.0", name: "Upstream Compatibility License v1.0", url: "https://opensource.org/license/ucl-1-0" ).freeze + LICENSES[ "unicode-dfs-2015" ] = SpdxLicenseMeta.new( short: "Unicode-DFS-2015", name: "Unicode, Inc. License Agreement - Data Files and Software", url: "https://opensource.org/license/unicode-inc-license-agreement-data-files-and-software" ).freeze + LICENSES[ "unlicense" ] = SpdxLicenseMeta.new( short: "Unlicense", name: "The Unlicense", url: "https://opensource.org/license/unlicense" ).freeze + LICENSES[ "upl-1.0" ] = SpdxLicenseMeta.new( short: "UPL-1.0", name: "The Universal Permissive License Version 1.0", url: "https://opensource.org/license/upl" ).freeze + LICENSES[ "vsl-0.1" ] = SpdxLicenseMeta.new( short: "VSL-0.1", name: "The Vovida Software License v. 1.0", url: "https://opensource.org/license/vovidapl-php" ).freeze + LICENSES[ "w3c-20150513" ] = SpdxLicenseMeta.new( short: "W3C-20150513", name: "The W3C® Software and Document license", url: "https://opensource.org/license/w3c" ).freeze + LICENSES[ "watcom-1.0" ] = SpdxLicenseMeta.new( short: "Watcom-1.0", name: "The Sybase Open Source Licence", url: "https://opensource.org/license/sybase-php" ).freeze + LICENSES[ "wxwindows" ] = SpdxLicenseMeta.new( short: "wxWindows", name: "The wxWindows Library Licence", url: "https://opensource.org/license/wxwindows-php" ).freeze + LICENSES[ "xnet" ] = SpdxLicenseMeta.new( short: "Xnet", name: "The X.Net, Inc. License", url: "https://opensource.org/license/xnet" ).freeze + LICENSES[ "zlib" ] = SpdxLicenseMeta.new( short: "Zlib", name: "The zlib/libpng License", url: "https://opensource.org/license/zlib" ).freeze + LICENSES[ "zpl-2.0" ] = SpdxLicenseMeta.new( short: "ZPL-2.0", name: "Zope Public License 2.0", url: "https://opensource.org/license/zpl-2-0" ).freeze + LICENSES[ "zpl-2.1" ] = SpdxLicenseMeta.new( short: "ZPL-2.1", name: "Zope Public License 2.1", url: "https://opensource.org/license/zpl-2-1" ).freeze LICENSES.freeze end end diff --git a/maven-tools.gemspec b/maven-tools.gemspec index a99d7ab..8e11838 100644 --- a/maven-tools.gemspec +++ b/maven-tools.gemspec @@ -32,9 +32,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'bigdecimal' # virtus is EOL, but depends on axiom-types which has a bigdecimal dependency s.add_runtime_dependency 'ostruct' # virtus is EOL, but depends on ostruct usage -# get them out from here until jruby-maven-plugin installs test gems somewhere else then runtime gems - - s.add_development_dependency 'rake', '~> 10.0' + s.add_development_dependency 'rake', '~> 13.0' s.add_development_dependency 'minitest', '~> 5.3' end diff --git a/pom.xml b/pom.xml index 9454384..4c50084 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ rubygems rake - [10.0,10.99999] + [13.0,13.99999] gem test diff --git a/spec/dsl/gemspec_spec/maven-tools.gemspec b/spec/dsl/gemspec_spec/maven-tools.gemspec index aa00d69..258e59d 100644 --- a/spec/dsl/gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/gemspec_spec/maven-tools.gemspec @@ -58,14 +58,14 @@ dependencies: requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' - !ruby/object:Gem::Dependency name: minitest requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/gemspec_spec/maven-tools.xml b/spec/dsl/gemspec_spec/maven-tools.xml index a1164f6..4213c9c 100644 --- a/spec/dsl/gemspec_spec/maven-tools.xml +++ b/spec/dsl/gemspec_spec/maven-tools.xml @@ -30,7 +30,7 @@ rubygems rake - [10.0,10.99999] + [13.0,13.99999] gem test diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec index aa00d69..258e59d 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec @@ -58,14 +58,14 @@ dependencies: requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' - !ruby/object:Gem::Dependency name: minitest requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.xml b/spec/dsl/profile_gemspec_spec/maven-tools.xml index c4e311f..f32c5e3 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.xml +++ b/spec/dsl/profile_gemspec_spec/maven-tools.xml @@ -31,7 +31,7 @@ rubygems rake - [10.0,10.99999] + [13.0,13.99999] gem test diff --git a/spec/dsl/project_gemspec_spec/extended.xml b/spec/dsl/project_gemspec_spec/extended.xml index 514ed0a..eafe736 100644 --- a/spec/dsl/project_gemspec_spec/extended.xml +++ b/spec/dsl/project_gemspec_spec/extended.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms.xml b/spec/dsl/project_gemspec_spec/jars_and_poms.xml index 8b99499..6a646b4 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml index 5f445db..00b8a44 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License diff --git a/spec/dsl/project_gemspec_spec/maven-tools.gemspec b/spec/dsl/project_gemspec_spec/maven-tools.gemspec index aa00d69..258e59d 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/project_gemspec_spec/maven-tools.gemspec @@ -58,14 +58,14 @@ dependencies: requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ~> - !ruby/object:Gem::Version - version: '10.0' + version: '13.0' - !ruby/object:Gem::Dependency name: minitest requirement: !ruby/object:Gem::Requirement diff --git a/spec/dsl/project_gemspec_spec/maven-tools.xml b/spec/dsl/project_gemspec_spec/maven-tools.xml index 95b4447..c69c6a6 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.xml +++ b/spec/dsl/project_gemspec_spec/maven-tools.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License @@ -51,7 +51,7 @@ rubygems rake - [10.0,10.99999] + [13.0,13.99999] gem test diff --git a/spec/dsl/project_gemspec_spec/no_gems.xml b/spec/dsl/project_gemspec_spec/no_gems.xml index 98997b4..f0a0c9c 100644 --- a/spec/dsl/project_gemspec_spec/no_gems.xml +++ b/spec/dsl/project_gemspec_spec/no_gems.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License diff --git a/spec/dsl/project_gemspec_spec/profile.xml b/spec/dsl/project_gemspec_spec/profile.xml index cf013fd..d71dd33 100644 --- a/spec/dsl/project_gemspec_spec/profile.xml +++ b/spec/dsl/project_gemspec_spec/profile.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License @@ -85,7 +85,7 @@ rubygems rake - [10.0,10.99999] + [13.0,13.99999] gem test diff --git a/spec/dsl/project_gemspec_spec/snapshot.xml b/spec/dsl/project_gemspec_spec/snapshot.xml index ad19533..cc5be51 100644 --- a/spec/dsl/project_gemspec_spec/snapshot.xml +++ b/spec/dsl/project_gemspec_spec/snapshot.xml @@ -10,8 +10,8 @@ MIT - http://opensource.org/licenses/MIT - MIT license + https://opensource.org/license/mit + The MIT License diff --git a/spec/gemspec/pom.xml b/spec/gemspec/pom.xml index 473e2c7..876b9fc 100644 --- a/spec/gemspec/pom.xml +++ b/spec/gemspec/pom.xml @@ -21,18 +21,18 @@ EPL-1.0 - http://opensource.org/licenses/EPL-1.0 - Eclipse Public License 1.0 + https://opensource.org/license/epl-1-0 + Eclipse Public License -v 1.0 GPL-2.0 - http://opensource.org/licenses/GPL-2.0 - GNU General Public License version 2.0 + https://opensource.org/license/gpl-2-0 + GNU General Public License version 2 LGPL-2.1 - http://opensource.org/licenses/LGPL-2.1 - GNU Library or "Lesser" General Public License version 2.1 + https://opensource.org/license/lgpl-2-1 + GNU Lesser General Public License version 2.1 diff --git a/spec/gemspec_dependencies_spec.rb b/spec/gemspec_dependencies_spec.rb index 59cbc30..8e80528 100644 --- a/spec/gemspec_dependencies_spec.rb +++ b/spec/gemspec_dependencies_spec.rb @@ -8,7 +8,7 @@ s.add_dependency 'thor', '>= 0.14.6', '< 2.0' s.add_dependency 'maven-tools', "~> 0.32.3" s.add_development_dependency 'minitest', '~> 5.3' - s.add_development_dependency 'rake', '~> 10.0' + s.add_development_dependency 'rake', '~> 13.0' s.requirements << 'jar sdas:das:tes, 123' s.requirements << 'jar sdas:das, 123' s.requirements << 'jar sdas.asd:das, 123, [fds:fre]' @@ -26,7 +26,7 @@ it 'should setup artifact' do _(subject.runtime).must_equal ["rubygems:thor:[0.14.6,2.0)", "rubygems:maven-tools:[0.32.3,0.32.99999]"] - _(subject.development).must_equal ["rubygems:minitest:[5.3,5.99999]", "rubygems:rake:[10.0,10.99999]"] + _(subject.development).must_equal ["rubygems:minitest:[5.3,5.99999]", "rubygems:rake:[13.0,13.99999]"] _(subject.java_runtime).must_equal [ ["sdas", "das", "jar", "tes", "123"], ["sdas", "das", "jar", "123"], ["sdas.asd", "das", "jar", "123", ["fds:fre"]], diff --git a/spec/gemspec_with_jar_dependencies/pom.xml b/spec/gemspec_with_jar_dependencies/pom.xml index 6ff324f..89adb90 100644 --- a/spec/gemspec_with_jar_dependencies/pom.xml +++ b/spec/gemspec_with_jar_dependencies/pom.xml @@ -21,18 +21,18 @@ EPL-1.0 - http://opensource.org/licenses/EPL-1.0 - Eclipse Public License 1.0 + https://opensource.org/license/epl-1-0 + Eclipse Public License -v 1.0 GPL-2.0 - http://opensource.org/licenses/GPL-2.0 - GNU General Public License version 2.0 + https://opensource.org/license/gpl-2-0 + GNU General Public License version 2 LGPL-2.1 - http://opensource.org/licenses/LGPL-2.1 - GNU Library or "Lesser" General Public License version 2.1 + https://opensource.org/license/lgpl-2-1 + GNU Lesser General Public License version 2.1 diff --git a/spec/gemspec_with_jars_lock/pom.xml b/spec/gemspec_with_jars_lock/pom.xml index 552964b..146716b 100644 --- a/spec/gemspec_with_jars_lock/pom.xml +++ b/spec/gemspec_with_jars_lock/pom.xml @@ -21,18 +21,18 @@ EPL-1.0 - http://opensource.org/licenses/EPL-1.0 - Eclipse Public License 1.0 + https://opensource.org/license/epl-1-0 + Eclipse Public License -v 1.0 GPL-2.0 - http://opensource.org/licenses/GPL-2.0 - GNU General Public License version 2.0 + https://opensource.org/license/gpl-2-0 + GNU General Public License version 2 LGPL-2.1 - http://opensource.org/licenses/LGPL-2.1 - GNU Library or "Lesser" General Public License version 2.1 + https://opensource.org/license/lgpl-2-1 + GNU Lesser General Public License version 2.1 From 8c7321f9f65eb10bd3f4440038aca3727d6dc9ec Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:37:33 +0800 Subject: [PATCH 8/9] Remove copyright-headers This is EOL, and broken on modern Rubies due to bad syntax, and needs replacement with something else. --- Gemfile | 2 -- Rakefile | 19 ------------------- 2 files changed, 21 deletions(-) diff --git a/Gemfile b/Gemfile index 5bc0ea2..75896e1 100644 --- a/Gemfile +++ b/Gemfile @@ -3,6 +3,4 @@ source 'https://rubygems.org' gemspec -gem "copyright-header", "1.0.22", :platform => :mri, :group => :copyright - # vim: syntax=Ruby diff --git a/Rakefile b/Rakefile index 7cfb0ff..43a773f 100644 --- a/Rakefile +++ b/Rakefile @@ -39,23 +39,4 @@ task :specs do Dir['spec/**/*_spec.rb'].each { |f| require f.sub(/spec\//, '') } end -task :headers do - require 'copyright_header' - - s = Gem::Specification.load( Dir["*gemspec"].first ) - - args = { - :license => s.license, - :copyright_software => s.name, - :copyright_software_description => s.description, - :copyright_holders => s.authors, - :copyright_years => [Time.now.year], - :add_path => "lib:src", - :output_dir => './' - } - - command_line = CopyrightHeader::CommandLine.new( args ) - command_line.execute -end - # vim: syntax=Ruby From 6dfe41abd0aaabb69094496f4e678d2ed9c571b4 Mon Sep 17 00:00:00 2001 From: Chad Wilson <29788154+chadlwilson@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:58:30 +0800 Subject: [PATCH 9/9] Remove remaining torquebox references --- lib/maven/tools/dsl.rb | 3 --- maven-tools.gemspec | 2 +- spec/dsl/gemspec_spec/jars_and_poms.gemspec | 2 +- spec/dsl/gemspec_spec/maven-tools.gemspec | 2 +- spec/dsl/profile_gemspec_spec/jars_and_poms.gemspec | 2 +- spec/dsl/profile_gemspec_spec/maven-tools.gemspec | 2 +- spec/dsl/profile_gemspec_spec/snapshot.gemspec | 2 +- spec/dsl/profile_gemspec_spec/unknown_license.gemspec | 2 +- spec/dsl/project_gemspec_spec/extended.gemspec | 2 +- spec/dsl/project_gemspec_spec/extended.xml | 6 +++--- spec/dsl/project_gemspec_spec/jars_and_poms.gemspec | 2 +- spec/dsl/project_gemspec_spec/jars_and_poms.xml | 6 +++--- .../dsl/project_gemspec_spec/jars_and_poms_include_jars.xml | 6 +++--- spec/dsl/project_gemspec_spec/maven-tools.gemspec | 2 +- spec/dsl/project_gemspec_spec/maven-tools.xml | 6 +++--- spec/dsl/project_gemspec_spec/no_gems.xml | 6 +++--- spec/dsl/project_gemspec_spec/profile.xml | 6 +++--- spec/dsl/project_gemspec_spec/snapshot.gemspec | 2 +- spec/dsl/project_gemspec_spec/snapshot.xml | 6 +++--- spec/dsl/project_gemspec_spec/unknown_license.gemspec | 2 +- spec/dsl/project_gemspec_spec/unknown_license.xml | 6 +++--- spec/mavenfile/Mavenfile | 6 +++--- spec/pom.xml | 6 +++--- spec/pom_maven_alternative_style/pom.rb | 6 +++--- spec/pom_maven_hash_style/pom.rb | 6 +++--- spec/pom_maven_style/pom.rb | 6 +++--- 26 files changed, 51 insertions(+), 54 deletions(-) diff --git a/lib/maven/tools/dsl.rb b/lib/maven/tools/dsl.rb index 7dadbed..14ea74b 100644 --- a/lib/maven/tools/dsl.rb +++ b/lib/maven/tools/dsl.rb @@ -43,9 +43,6 @@ def model @model end - # TODO remove me - def needs_torquebox= t - end # TODO remove me def current @current diff --git a/maven-tools.gemspec b/maven-tools.gemspec index 8e11838..3682076 100644 --- a/maven-tools.gemspec +++ b/maven-tools.gemspec @@ -7,7 +7,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/gemspec_spec/jars_and_poms.gemspec b/spec/dsl/gemspec_spec/jars_and_poms.gemspec index 1de54ac..09495e7 100644 --- a/spec/dsl/gemspec_spec/jars_and_poms.gemspec +++ b/spec/dsl/gemspec_spec/jars_and_poms.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/gemspec_spec/maven-tools.gemspec b/spec/dsl/gemspec_spec/maven-tools.gemspec index 258e59d..62e1699 100644 --- a/spec/dsl/gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/gemspec_spec/maven-tools.gemspec @@ -267,7 +267,7 @@ files: - spec/gemspec_with_extras/bouncy-castle-java.gemspec - spec/gemspec_with_source_and_no_jar/bouncy-castle-java.gemspec - spec/gemfile_with_extras/bouncy-castle-java.gemspec -homepage: http://github.com/torquebox/maven-tools +homepage: https://github.com/jruby/maven-tools licenses: - MIT metadata: {} diff --git a/spec/dsl/profile_gemspec_spec/jars_and_poms.gemspec b/spec/dsl/profile_gemspec_spec/jars_and_poms.gemspec index f455206..92aea7f 100644 --- a/spec/dsl/profile_gemspec_spec/jars_and_poms.gemspec +++ b/spec/dsl/profile_gemspec_spec/jars_and_poms.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec index 258e59d..62e1699 100644 --- a/spec/dsl/profile_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/profile_gemspec_spec/maven-tools.gemspec @@ -267,7 +267,7 @@ files: - spec/gemspec_with_extras/bouncy-castle-java.gemspec - spec/gemspec_with_source_and_no_jar/bouncy-castle-java.gemspec - spec/gemfile_with_extras/bouncy-castle-java.gemspec -homepage: http://github.com/torquebox/maven-tools +homepage: https://github.com/jruby/maven-tools licenses: - MIT metadata: {} diff --git a/spec/dsl/profile_gemspec_spec/snapshot.gemspec b/spec/dsl/profile_gemspec_spec/snapshot.gemspec index 21f5b2d..b7ffe6e 100644 --- a/spec/dsl/profile_gemspec_spec/snapshot.gemspec +++ b/spec/dsl/profile_gemspec_spec/snapshot.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/profile_gemspec_spec/unknown_license.gemspec b/spec/dsl/profile_gemspec_spec/unknown_license.gemspec index 73294da..b842ca2 100644 --- a/spec/dsl/profile_gemspec_spec/unknown_license.gemspec +++ b/spec/dsl/profile_gemspec_spec/unknown_license.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/project_gemspec_spec/extended.gemspec b/spec/dsl/project_gemspec_spec/extended.gemspec index ebc8f1d..c01d0a6 100644 --- a/spec/dsl/project_gemspec_spec/extended.gemspec +++ b/spec/dsl/project_gemspec_spec/extended.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/project_gemspec_spec/extended.xml b/spec/dsl/project_gemspec_spec/extended.xml index eafe736..541a4ea 100644 --- a/spec/dsl/project_gemspec_spec/extended.xml +++ b/spec/dsl/project_gemspec_spec/extended.xml @@ -5,7 +5,7 @@ 123 gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms.gemspec b/spec/dsl/project_gemspec_spec/jars_and_poms.gemspec index f455206..92aea7f 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms.gemspec +++ b/spec/dsl/project_gemspec_spec/jars_and_poms.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms.xml b/spec/dsl/project_gemspec_spec/jars_and_poms.xml index 6a646b4..fbca3c2 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms.xml @@ -5,7 +5,7 @@ 123 gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml index 00b8a44..0263465 100644 --- a/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml +++ b/spec/dsl/project_gemspec_spec/jars_and_poms_include_jars.xml @@ -5,7 +5,7 @@ 123 gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/maven-tools.gemspec b/spec/dsl/project_gemspec_spec/maven-tools.gemspec index 258e59d..62e1699 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.gemspec +++ b/spec/dsl/project_gemspec_spec/maven-tools.gemspec @@ -267,7 +267,7 @@ files: - spec/gemspec_with_extras/bouncy-castle-java.gemspec - spec/gemspec_with_source_and_no_jar/bouncy-castle-java.gemspec - spec/gemfile_with_extras/bouncy-castle-java.gemspec -homepage: http://github.com/torquebox/maven-tools +homepage: https://github.com/jruby/maven-tools licenses: - MIT metadata: {} diff --git a/spec/dsl/project_gemspec_spec/maven-tools.xml b/spec/dsl/project_gemspec_spec/maven-tools.xml index c69c6a6..19d4dcf 100644 --- a/spec/dsl/project_gemspec_spec/maven-tools.xml +++ b/spec/dsl/project_gemspec_spec/maven-tools.xml @@ -5,7 +5,7 @@ VERSION gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/no_gems.xml b/spec/dsl/project_gemspec_spec/no_gems.xml index f0a0c9c..340310a 100644 --- a/spec/dsl/project_gemspec_spec/no_gems.xml +++ b/spec/dsl/project_gemspec_spec/no_gems.xml @@ -5,7 +5,7 @@ VERSION gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/profile.xml b/spec/dsl/project_gemspec_spec/profile.xml index d71dd33..fb676dc 100644 --- a/spec/dsl/project_gemspec_spec/profile.xml +++ b/spec/dsl/project_gemspec_spec/profile.xml @@ -5,7 +5,7 @@ VERSION gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/snapshot.gemspec b/spec/dsl/project_gemspec_spec/snapshot.gemspec index 21f5b2d..b7ffe6e 100644 --- a/spec/dsl/project_gemspec_spec/snapshot.gemspec +++ b/spec/dsl/project_gemspec_spec/snapshot.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/project_gemspec_spec/snapshot.xml b/spec/dsl/project_gemspec_spec/snapshot.xml index cc5be51..d4d27c6 100644 --- a/spec/dsl/project_gemspec_spec/snapshot.xml +++ b/spec/dsl/project_gemspec_spec/snapshot.xml @@ -5,7 +5,7 @@ VERSION gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -21,8 +21,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/dsl/project_gemspec_spec/unknown_license.gemspec b/spec/dsl/project_gemspec_spec/unknown_license.gemspec index 73294da..b842ca2 100644 --- a/spec/dsl/project_gemspec_spec/unknown_license.gemspec +++ b/spec/dsl/project_gemspec_spec/unknown_license.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = 'helpers for maven related tasks' s.description = 'adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc' - s.homepage = 'http://github.com/torquebox/maven-tools' + s.homepage = 'https://github.com/jruby/maven-tools' s.authors = ['Christian Meier'] s.email = ['m.kristian@web.de'] diff --git a/spec/dsl/project_gemspec_spec/unknown_license.xml b/spec/dsl/project_gemspec_spec/unknown_license.xml index f6d296b..762bcdb 100644 --- a/spec/dsl/project_gemspec_spec/unknown_license.xml +++ b/spec/dsl/project_gemspec_spec/unknown_license.xml @@ -5,7 +5,7 @@ 123 gem helpers for maven related tasks - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools adds versions conversion from rubygems to maven and vice versa, ruby DSL for POM (Project Object Model from maven), pom generators, etc @@ -19,8 +19,8 @@ - https://github.com/torquebox/maven-tools.git - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools.git + https://github.com/jruby/maven-tools utf-8 diff --git a/spec/mavenfile/Mavenfile b/spec/mavenfile/Mavenfile index d99560e..d64e38f 100644 --- a/spec/mavenfile/Mavenfile +++ b/spec/mavenfile/Mavenfile @@ -56,10 +56,10 @@ prerequisites :maven => '3.0.5' modules 'part1', 'part2' scm do - connection 'scm:git:git://github.com/torquebox/maven-tools.git' - developer_connection 'scm:git:ssh://git@github.com/torquebox/maven-tools.git' + connection 'scm:git:git://github.com/jruby/maven-tools.git' + developer_connection 'scm:git:ssh://git@github.com/jruby/maven-tools.git' tag 'first' - url 'http://github.com/torquebox/maven-tools' + url 'https://github.com/jruby/maven-tools' end issue_management do diff --git a/spec/pom.xml b/spec/pom.xml index 19158ad..6936d16 100644 --- a/spec/pom.xml +++ b/spec/pom.xml @@ -91,10 +91,10 @@ part2 - scm:git:git://github.com/torquebox/maven-tools.git - scm:git:ssh://git@github.com/torquebox/maven-tools.git + scm:git:git://github.com/jruby/maven-tools.git + scm:git:ssh://git@github.com/jruby/maven-tools.git first - http://github.com/torquebox/maven-tools + https://github.com/jruby/maven-tools jira diff --git a/spec/pom_maven_alternative_style/pom.rb b/spec/pom_maven_alternative_style/pom.rb index 4496392..20e67ed 100644 --- a/spec/pom_maven_alternative_style/pom.rb +++ b/spec/pom_maven_alternative_style/pom.rb @@ -51,9 +51,9 @@ modules 'part1', 'part2' - scm( 'scm:git:git://github.com/torquebox/maven-tools.git', - 'scm:git:ssh://git@github.com/torquebox/maven-tools.git', - 'http://github.com/torquebox/maven-tools', + scm( 'scm:git:git://github.com/jruby/maven-tools.git', + 'scm:git:ssh://git@github.com/jruby/maven-tools.git', + 'https://github.com/jruby/maven-tools', :tag => 'first' ) issue_management( 'https://issues.sonatype.org/', :system => 'jira' ) diff --git a/spec/pom_maven_hash_style/pom.rb b/spec/pom_maven_hash_style/pom.rb index d4bb41f..187130a 100644 --- a/spec/pom_maven_hash_style/pom.rb +++ b/spec/pom_maven_hash_style/pom.rb @@ -55,10 +55,10 @@ modules 'part1', 'part2' - scm( :connection => 'scm:git:git://github.com/torquebox/maven-tools.git', - :developer_connection => 'scm:git:ssh://git@github.com/torquebox/maven-tools.git', + scm( :connection => 'scm:git:git://github.com/jruby/maven-tools.git', + :developer_connection => 'scm:git:ssh://git@github.com/jruby/maven-tools.git', :tag => 'first', - :url => 'http://github.com/torquebox/maven-tools' ) + :url => 'https://github.com/jruby/maven-tools' ) issue_management( :system => 'jira', :url => 'https://issues.sonatype.org/' ) ci_management( :system => 'travis', diff --git a/spec/pom_maven_style/pom.rb b/spec/pom_maven_style/pom.rb index 6eb3802..fbae1e8 100644 --- a/spec/pom_maven_style/pom.rb +++ b/spec/pom_maven_style/pom.rb @@ -77,10 +77,10 @@ modules 'part1', 'part2' scm do - connection 'scm:git:git://github.com/torquebox/maven-tools.git' - developer_connection 'scm:git:ssh://git@github.com/torquebox/maven-tools.git' + connection 'scm:git:git://github.com/jruby/maven-tools.git' + developer_connection 'scm:git:ssh://git@github.com/jruby/maven-tools.git' tag 'first' - url 'http://github.com/torquebox/maven-tools' + url 'https://github.com/jruby/maven-tools' end issue_management do system 'jira'