diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index dd97b90..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,33 +0,0 @@ -# -# Copyright 2018-2021 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -version: 2 -updates: -# Maintain dependencies for GitHub Actions -- package-ecosystem: github-actions - directory: "/" - schedule: - interval: daily -# Maintain dependencies for Maven dependencies -- package-ecosystem: maven - directory: "/" - schedule: - interval: daily - open-pull-requests-limit: 10 - ignore: - - dependency-name: org.hsqldb:hsqldb - versions: - - ">= 2.6.0" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 658384d..7cf0088 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] - java: [8, 11, 17, 18, 19-ea] + java: [11, 17, 18, 19-ea] distribution: ['zulu'] fail-fast: false max-parallel: 4 diff --git a/.github/workflows/coveralls.yaml b/.github/workflows/coveralls.yaml index 72e4f39..f8a5539 100644 --- a/.github/workflows/coveralls.yaml +++ b/.github/workflows/coveralls.yaml @@ -27,7 +27,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 8 + java-version: 11 distribution: zulu - name: Report Coverage to Coveralls for Pull Requests if: github.event_name == 'pull_request' diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 76c1ee1..13c2f61 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -7,7 +7,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 0000000..956533e --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1 @@ +-Daether.checksums.algorithms=SHA-512,SHA-256,SHA-1,MD5 diff --git a/.mvn/settings.xml b/.mvn/settings.xml index b0f6028..d07008b 100644 --- a/.mvn/settings.xml +++ b/.mvn/settings.xml @@ -7,7 +7,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java index 17add53..732313c 100755 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -17,14 +17,24 @@ * under the License. */ -import java.net.*; -import java.io.*; -import java.nio.channels.*; +import java.io.IOException; +import java.io.InputStream; +import java.net.Authenticator; +import java.net.PasswordAuthentication; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.nio.file.StandardOpenOption; import java.util.Properties; -public class MavenWrapperDownloader +public final class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "3.1.0"; + private static final String WRAPPER_VERSION = "3.1.1"; + + private static final boolean VERBOSE = Boolean.parseBoolean( System.getenv( "MVNW_VERBOSE" ) ); /** * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. @@ -49,78 +59,53 @@ public class MavenWrapperDownloader */ private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - public static void main( String args[] ) + public static void main( String[] args ) { - System.out.println( "- Downloader started" ); - File baseDirectory = new File( args[0] ); - System.out.println( "- Using base directory: " + baseDirectory.getAbsolutePath() ); - - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File( baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH ); - String url = DEFAULT_DOWNLOAD_URL; - if ( mavenWrapperPropertyFile.exists() ) + if ( args.length == 0 ) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try - { - mavenWrapperPropertyFileInputStream = new FileInputStream( mavenWrapperPropertyFile ); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load( mavenWrapperPropertyFileInputStream ); - url = mavenWrapperProperties.getProperty( PROPERTY_NAME_WRAPPER_URL, url ); - } - catch ( IOException e ) - { - System.out.println( "- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'" ); - } - finally - { - try - { - if ( mavenWrapperPropertyFileInputStream != null ) - { - mavenWrapperPropertyFileInputStream.close(); - } - } - catch ( IOException e ) - { - // Ignore ... - } - } + System.err.println( " - ERROR projectBasedir parameter missing" ); + System.exit( 1 ); } - System.out.println( "- Downloading from: " + url ); - File outputFile = new File( baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH ); - if ( !outputFile.getParentFile().exists() ) + log( " - Downloader started" ); + final String dir = args[0].replace( "..", "" ); // Sanitize path + final Path projectBasedir = Paths.get( dir ).toAbsolutePath().normalize(); + if ( !Files.isDirectory( projectBasedir, LinkOption.NOFOLLOW_LINKS ) ) { - if ( !outputFile.getParentFile().mkdirs() ) - { - System.out.println( "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() - + "'" ); - } + System.err.println( " - ERROR projectBasedir not exists: " + projectBasedir ); + System.exit( 1 ); } - System.out.println( "- Downloading to: " + outputFile.getAbsolutePath() ); + + log( " - Using base directory: " + projectBasedir ); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + Path mavenWrapperPropertyFile = projectBasedir.resolve( MAVEN_WRAPPER_PROPERTIES_PATH ); + String url = readWrapperUrl( mavenWrapperPropertyFile ); + try { + Path outputFile = projectBasedir.resolve( MAVEN_WRAPPER_JAR_PATH ); + createDirectories( outputFile.getParent() ); downloadFileFromURL( url, outputFile ); - System.out.println( "Done" ); + log( "Done" ); System.exit( 0 ); } - catch ( Throwable e ) + catch ( IOException e ) { - System.out.println( "- Error downloading" ); + System.err.println( "- Error downloading" ); e.printStackTrace(); System.exit( 1 ); } } - private static void downloadFileFromURL( String urlString, File destination ) - throws Exception + private static void downloadFileFromURL( String urlString, Path destination ) throws IOException { + log( " - Downloading to: " + destination ); if ( System.getenv( "MVNW_USERNAME" ) != null && System.getenv( "MVNW_PASSWORD" ) != null ) { - String username = System.getenv( "MVNW_USERNAME" ); - char[] password = System.getenv( "MVNW_PASSWORD" ).toCharArray(); + final String username = System.getenv( "MVNW_USERNAME" ); + final char[] password = System.getenv( "MVNW_PASSWORD" ).toCharArray(); Authenticator.setDefault( new Authenticator() { @Override @@ -131,12 +116,47 @@ protected PasswordAuthentication getPasswordAuthentication() } ); } URL website = new URL( urlString ); - ReadableByteChannel rbc; - rbc = Channels.newChannel( website.openStream() ); - FileOutputStream fos = new FileOutputStream( destination ); - fos.getChannel().transferFrom( rbc, 0, Long.MAX_VALUE ); - fos.close(); - rbc.close(); + try ( InputStream inStream = website.openStream() ) { + Files.copy( inStream, destination, StandardCopyOption.REPLACE_EXISTING ); + } + log( " - Downloader complete" ); + } + + private static void createDirectories(Path outputPath) throws IOException + { + if ( !Files.isDirectory( outputPath, LinkOption.NOFOLLOW_LINKS ) ) { + Path createDirectories = Files.createDirectories( outputPath ); + log( " - Directories created: " + createDirectories ); + } + } + + private static String readWrapperUrl( Path mavenWrapperPropertyFile ) + { + String url = DEFAULT_DOWNLOAD_URL; + if ( Files.exists( mavenWrapperPropertyFile, LinkOption.NOFOLLOW_LINKS ) ) + { + log( " - Reading property file: " + mavenWrapperPropertyFile ); + try ( InputStream in = Files.newInputStream( mavenWrapperPropertyFile, StandardOpenOption.READ ) ) + { + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load( in ); + url = mavenWrapperProperties.getProperty( PROPERTY_NAME_WRAPPER_URL, DEFAULT_DOWNLOAD_URL ); + } + catch ( IOException e ) + { + System.err.println( " - ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'" ); + } + } + log( " - Downloading from: " + url ); + return url; + } + + private static void log( String msg ) + { + if ( VERBOSE ) + { + System.out.println( msg ); + } } } diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index db95c13..dc3affc 100755 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -5,14 +5,14 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# +# +# https://www.apache.org/licenses/LICENSE-2.0 +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/license.txt b/LICENSE_HEADER similarity index 92% rename from license.txt rename to LICENSE_HEADER index 4ce1777..a81590a 100644 --- a/license.txt +++ b/LICENSE_HEADER @@ -4,7 +4,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/README.md b/README.md index b9acb96..d24cbff 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Coverage Status](https://coveralls.io/repos/github/mybatis/thymeleaf-scripting/badge.svg?branch=master)](https://coveralls.io/github/mybatis/thymeleaf-scripting?branch=master) [![Maven central](https://maven-badges.herokuapp.com/maven-central/org.mybatis.scripting/mybatis-thymeleaf/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.mybatis.scripting/mybatis-thymeleaf) [![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/https/oss.sonatype.org/org.mybatis.scripting/mybatis-thymeleaf.svg)](https://oss.sonatype.org/content/repositories/snapshots/org/mybatis/scripting/mybatis-thymeleaf/) -[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html) +[![License](https://img.shields.io/:license-apache-brightgreen.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) ![thymeleaf-scripting](http://mybatis.github.io/images/mybatis-logo.png) @@ -58,7 +58,7 @@ SELECT * FROM names ## Documentation -* [Published User's Guide](http://www.mybatis.org/thymeleaf-scripting/user-guide.html) +* [Published User's Guide](https://www.mybatis.org/thymeleaf-scripting/user-guide.html) * [Snapshot User's Guide](src/main/asciidoc/user-guide.adoc) diff --git a/format.xml b/format.xml index 75ef2a6..ba1053a 100644 --- a/format.xml +++ b/format.xml @@ -1,13 +1,13 @@ - + 4.0.0 org.mybatis mybatis-parent - 34 + 36 @@ -102,7 +102,7 @@ org.hsqldb hsqldb - 2.5.2 + 2.7.0 test @@ -136,35 +136,6 @@ - - - - net.revelc.code.formatter - formatter-maven-plugin - - - **/DefaultPackageNameMapper.java - - - - - net.revelc.code - impsort-maven-plugin - - - **/DefaultPackageNameMapper.java - - - - - com.mycila - license-maven-plugin - - - **/DefaultPackageNameMapper.java - - - diff --git a/src/main/asciidoc/docinfos/docinfo-footer.html b/src/main/asciidoc/docinfos/docinfo-footer.html index d524a55..6a8958d 100644 --- a/src/main/asciidoc/docinfos/docinfo-footer.html +++ b/src/main/asciidoc/docinfos/docinfo-footer.html @@ -1,12 +1,12 @@