From 97e1527ed6c156b107baee8470d28954c3623f40 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 22 Aug 2023 10:46:46 +1000 Subject: [PATCH] Jetty 12.0.x use Maven build cache for PRs and branches except jetty-12.0.x main branch (#9871) * apply configuration/changes for build cache Signed-off-by: Olivier Lamy Signed-off-by: Olivier Lamy --- .github/workflows/codeql-analysis.yml | 6 +- .mvn/jvm.config | 2 + .mvn/maven-build-cache-config.xml | 105 ++++++++++++++++++ .mvn/maven.config | 1 + Jenkinsfile | 36 +++++- README.md | 2 +- build/scripts/dependency-update-reports.sh | 10 +- build/scripts/release-jetty.sh | 8 +- documentation/jetty-documentation/pom.xml | 5 +- .../asciidoc/contribution-guide/4-build.adoc | 20 +++- .../jetty-alpn/jetty-alpn-client/pom.xml | 6 - .../jetty-alpn/jetty-alpn-server/pom.xml | 6 - jetty-core/jetty-start/pom.xml | 25 +++++ .../jetty/start/PropertyPassingTest.java | 2 +- jetty-core/jetty-util/pom.xml | 2 +- .../eclipse/jetty/xml/XmlConfiguration.java | 2 + .../jetty-ee10-demo-embedded/pom.xml | 24 +++- .../eclipse/jetty/ee10/demos/JettyDemos.java | 72 ++++++++---- .../jetty/ee10/demos/LikeJettyXml.java | 4 +- .../eclipse/jetty/ee10/demos/OneWebApp.java | 4 +- .../jetty/ee10/demos/OneWebAppWithJsp.java | 4 +- .../ee10/demos/ServerWithAnnotations.java | 4 +- .../jetty/ee10/demos/ServerWithJNDI.java | 4 +- .../jetty-ee10-demo-spec-webapp/pom.xml | 40 +++++++ .../jetty/ee10/demos/SpecWebAppTest.java | 11 +- .../jetty-ee10-jspc-maven-plugin/pom.xml | 2 - jetty-ee10/jetty-ee10-maven-plugin/pom.xml | 42 ++++++- .../src/it/jetty-cdi-start-forked/pom.xml | 6 +- .../jetty-simple-webapp/pom.xml | 3 +- .../jetty-simple-webapp/pom.xml | 1 + .../src/it/settings.xml | 1 + .../ee10/maven/plugin/AbstractWebAppMojo.java | 8 +- .../ee10/maven/plugin/JettyHomeForker.java | 4 +- .../test-jetty-ee10-osgi/pom.xml | 9 +- jetty-ee8/jetty-ee8-jspc-maven-plugin/pom.xml | 2 - jetty-ee8/jetty-ee8-maven-plugin/pom.xml | 2 - .../jetty-ee9-demo-embedded/pom.xml | 24 +++- .../eclipse/jetty/ee9/demos/JettyDemos.java | 66 +++++++---- .../eclipse/jetty/ee9/demos/OneWebApp.java | 4 +- .../jetty/ee9/demos/OneWebAppWithJsp.java | 4 +- .../ee9/demos/ServerWithAnnotations.java | 4 +- .../jetty/ee9/demos/ServerWithJNDI.java | 4 +- jetty-ee9/jetty-ee9-jspc-maven-plugin/pom.xml | 2 - jetty-ee9/jetty-ee9-maven-plugin/pom.xml | 32 +++++- .../ee9/maven/plugin/AbstractWebAppMojo.java | 8 +- .../test-jetty-ee9-osgi/pom.xml | 9 +- pom.xml | 35 +++++- tests/test-distribution/pom.xml | 2 +- 48 files changed, 562 insertions(+), 117 deletions(-) create mode 100644 .mvn/maven-build-cache-config.xml create mode 100644 .mvn/maven.config diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7ac299993b4..ba2eff8821e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -74,14 +74,14 @@ jobs: - name: Set up Maven uses: stCarolas/setup-maven@v4.5 with: - maven-version: 3.8.6 + maven-version: 3.9.4 - name: Set up Maven run: - mvn -e -B -V org.apache.maven.plugins:maven-wrapper-plugin:3.1.0:wrapper "-Dmaven=3.8.6" + mvn -e -B -V org.apache.maven.plugins:maven-wrapper-plugin:3.1.0:wrapper "-Dmaven=3.9.4" - name: Clean install dependencies and build - run: mvn clean install -DskipTests -B -V + run: mvn clean install -DskipTests -B -Dmaven.build.cache.enabled=false # ℹī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun diff --git a/.mvn/jvm.config b/.mvn/jvm.config index 32599cefea5..4bbddaa6ac4 100644 --- a/.mvn/jvm.config +++ b/.mvn/jvm.config @@ -8,3 +8,5 @@ --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED +--add-opens java.base/sun.nio.ch=ALL-UNNAMED + diff --git a/.mvn/maven-build-cache-config.xml b/.mvn/maven-build-cache-config.xml new file mode 100644 index 00000000000..94b509037bb --- /dev/null +++ b/.mvn/maven-build-cache-config.xml @@ -0,0 +1,105 @@ + + + XXMM + true + + + + + + + + + + ci + + + + + + + *.{java,xml,properties,mod,adoc} + + + + + + scriptVariables + settingsFile + filterProperties + + + + + + + systemPropertyVariables + + + + + + + attributes + + + + + + + + + + + install + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .*\.zip + + + + + diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 00000000000..539dc8173f8 --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1 @@ +-Daether.dependencyCollector.impl=bf diff --git a/Jenkinsfile b/Jenkinsfile index ef157dabb3b..0b45920c3f2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,7 +18,7 @@ pipeline { timeout( time: 180, unit: 'MINUTES' ) { checkout scm mavenBuild( "jdk21", "clean install -Dspotbugs.skip=true -Djacoco.skip=true", "maven3") - recordIssues id: "jdk21", name: "Static Analysis jdk19", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle()] + recordIssues id: "jdk21", name: "Static Analysis jdk21", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle()] } } } @@ -28,7 +28,7 @@ pipeline { steps { timeout( time: 180, unit: 'MINUTES' ) { checkout scm - mavenBuild( "jdk17", "clean install javadoc:javadoc -Perrorprone", "maven3") + mavenBuild( "jdk17", "clean install -Perrorprone", "maven3") // javadoc:javadoc // Collect up the jacoco execution results (only on main build) jacoco inclusionPattern: '**/org/eclipse/jetty/**/*.class', exclusionPattern: '' + @@ -104,9 +104,21 @@ def mavenBuild(jdk, cmdline, mvnName) { withEnv(["JAVA_HOME=${ tool "$jdk" }", "PATH+MAVEN=${ tool "$jdk" }/bin:${tool "$mvnName"}/bin", "MAVEN_OPTS=-Xms2g -Xmx4g -Djava.awt.headless=true"]) { - configFileProvider( - [configFile(fileId: 'oss-settings.xml', variable: 'GLOBAL_MVN_SETTINGS')]) { - sh "mvn -Dmaven.repo.uri=http://10.0.0.15:8081/repository/maven-public/ -Dmaven.test.failure.ignore=true -ntp -s $GLOBAL_MVN_SETTINGS -Dmaven.repo.local=.repository -Pci -V -B -e $cmdline" + configFileProvider( + [configFile(fileId: 'oss-settings.xml', variable: 'GLOBAL_MVN_SETTINGS'), + configFile(fileId: 'maven-build-cache-config.xml', variable: 'MVN_BUILD_CACHE_CONFIG')]) { + //sh "cp $MVN_BUILD_CACHE_CONFIG .mvn/maven-build-cache-config.xml" + //-Dmaven.build.cache.configPath=$MVN_BUILD_CACHE_CONFIG + buildCache = useBuildCache() + if (buildCache) { + echo "Using build cache" + extraArgs = " -Dmaven.build.cache.restoreGeneratedSources=false -Dmaven.build.cache.remote.url=dav:http://nginx-cache-service.jenkins.svc.cluster.local:80 -Dmaven.build.cache.remote.enabled=true -Dmaven.build.cache.remote.save.enabled=true -Dmaven.build.cache.remote.server.id=remote-build-cache-server " + } else { + // when not using cache + echo "Not using build cache" + extraArgs = " -Dmaven.test.failure.ignore=true -Dmaven.build.cache.enabled=false " + } + sh "mvn $extraArgs -DsettingsPath=$GLOBAL_MVN_SETTINGS -Dmaven.repo.uri=http://nexus-service.nexus.svc.cluster.local:8081/repository/maven-public/ -ntp -s $GLOBAL_MVN_SETTINGS -Dmaven.repo.local=.repository -Pci -V -B -e -U $cmdline" } } } @@ -117,4 +129,18 @@ def mavenBuild(jdk, cmdline, mvnName) { } } +/** + * calculate to use cache or not. per default will not run + */ +def useBuildCache() { + def labelNoBuildCache = false + if (env.BRANCH_NAME ==~ /PR-\d+/) { + labelNoBuildCache = pullRequest.labels.contains("build-no-cache") + } + def noBuildCache = (env.BRANCH_NAME == 'jetty-12.0.x') || labelNoBuildCache; + return !noBuildCache; + // want to skip build cache + // return false +} + // vim: et:ts=2:sw=2:ft=groovy diff --git a/README.md b/README.md index de8b74f79ac..921e9350581 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,4 @@ The documentation is divided into three guides, based on use case: # Commercial Support -Expert advice and production support of Jetty are provided by [Webtide](https://webtide.com). +Expert advice and production support of Jetty are provided by [Webtide](https://webtide.com). \ No newline at end of file diff --git a/build/scripts/dependency-update-reports.sh b/build/scripts/dependency-update-reports.sh index c8fcde4d72f..e29a76d073b 100755 --- a/build/scripts/dependency-update-reports.sh +++ b/build/scripts/dependency-update-reports.sh @@ -14,28 +14,28 @@ mkdir -p $REPORT_OUTPUT_DIR echo "HTML Reports can be found in $REPORT_OUTPUT_DIR" -mvn -N -B -Pdependency-updates-reports validate +mvn -N -B -Pdependency-updates-reports validate -Dmaven.build.cache.enabled=false cp -Rv target/site/* $REPORT_OUTPUT_DIR mv $REPORT_OUTPUT_DIR/dependency-updates-aggregate-report.html $REPORT_OUTPUT_DIR/dependency-updates-report-root.html pushd jetty-core -mvn -B -Pdependency-updates-reports validate +mvn -B -Pdependency-updates-reports validate -Dmaven.build.cache.enabled=false cp target/site/dependency-updates-aggregate-report.html $REPORT_OUTPUT_DIR/dependency-updates-report-core.html popd pushd jetty-ee10 -mvn -B -Pdependency-updates-reports validate +mvn -B -Pdependency-updates-reports validate -Dmaven.build.cache.enabled=false cp target/site/dependency-updates-aggregate-report.html $REPORT_OUTPUT_DIR/dependency-updates-report-ee10.html popd pushd jetty-ee9 -mvn -B -Pdependency-updates-reports validate +mvn -B -Pdependency-updates-reports validate -Dmaven.build.cache.enabled=false cp target/site/dependency-updates-aggregate-report.html $REPORT_OUTPUT_DIR/dependency-updates-report-ee9.html popd pushd jetty-ee8 -mvn -B -Pdependency-updates-reports validate +mvn -B -Pdependency-updates-reports validate -Dmaven.build.cache.enabled=false cp target/site/dependency-updates-aggregate-report.html $REPORT_OUTPUT_DIR/dependency-updates-report-ee8.html popd diff --git a/build/scripts/release-jetty.sh b/build/scripts/release-jetty.sh index 42ee3ecff20..0674a709eec 100755 --- a/build/scripts/release-jetty.sh +++ b/build/scripts/release-jetty.sh @@ -88,7 +88,7 @@ if [ ! -d "$ALT_DEPLOY_DIR" ] ; then fi # DEPLOY_OPTS="-Dmaven.test.failure.ignore=true" -DEPLOY_OPTS="-DskipTests -Dasciidoctor.skip=false" +DEPLOY_OPTS="-DskipTests -Dasciidoctor.skip=false -Dmaven.build.cache.enabled=false" # DEPLOY_OPTS="$DEPLOY_OPTS -DaltDeploymentRepository=intarget::default::file://$ALT_DEPLOY_DIR/" # Uncomment for Java 1.7 @@ -131,10 +131,10 @@ reportMavenTestFailures() { echo "" if proceedyn "Are you sure you want to release using above? (y/N)" n; then - mvn clean install -pl build + mvn clean install -pl build -Dmaven.build.cache.enabled=false echo "" if proceedyn "Update VERSION.txt for $VER_RELEASE? (Y/n)" y; then - mvn -N -Pupdate-version generate-resources + mvn -N -Pupdate-version generate-resources -Dmaven.build.cache.enabled=false cp VERSION.txt VERSION.txt.backup cat VERSION.txt.backup | sed -e "s/$VER_CURRENT/$VER_RELEASE/" > VERSION.txt rm VERSION.txt.backup @@ -146,6 +146,7 @@ if proceedyn "Are you sure you want to release using above? (y/N)" n; then # This is equivalent to 'mvn release:prepare' if proceedyn "Update project.versions for $VER_RELEASE? (Y/n)" y; then mvn org.codehaus.mojo:versions-maven-plugin:2.7:set \ + -Dmaven.build.cache.enabled=false \ -Peclipse-release \ -DoldVersion="$VER_CURRENT" \ -DnewVersion="$VER_RELEASE" \ @@ -175,6 +176,7 @@ if proceedyn "Are you sure you want to release using above? (y/N)" n; then cat VERSION.txt.backup >> VERSION.txt echo "Update project.versions for $VER_NEXT" mvn org.codehaus.mojo:versions-maven-plugin:2.7:set \ + -Dmaven.build.cache.enabled=false \ -Peclipse-release \ -DoldVersion="$VER_RELEASE" \ -DnewVersion="$VER_NEXT" \ diff --git a/documentation/jetty-documentation/pom.xml b/documentation/jetty-documentation/pom.xml index da493056053..303514c1da3 100644 --- a/documentation/jetty-documentation/pom.xml +++ b/documentation/jetty-documentation/pom.xml @@ -14,6 +14,7 @@ ${project.groupId} ${skipTests} + true @@ -137,11 +138,13 @@ ${project.basedir} ${project.version} - ${settings.localRepository} + ${session.repositorySession.localRepository.basedir.absolutePath} ${project.version} + ../programming-guide/index.html ../operations-guide/index.html https://eclipse.dev/jetty/javadoc/jetty-12 + diff --git a/documentation/jetty-documentation/src/main/asciidoc/contribution-guide/4-build.adoc b/documentation/jetty-documentation/src/main/asciidoc/contribution-guide/4-build.adoc index 4bb9e18a6b4..a27b3ee4624 100644 --- a/documentation/jetty-documentation/src/main/asciidoc/contribution-guide/4-build.adoc +++ b/documentation/jetty-documentation/src/main/asciidoc/contribution-guide/4-build.adoc @@ -24,11 +24,11 @@ Here are the minimum Maven and JDK version build requirements for each actively .Build versioning requirements by branch |=== -| Branch | Maven Version | Minimum JDK +| Branch | Maven Version | Minimum JDK | Recommended JDK -| jetty-12.0.x | Maven 3.8.6+ | OpenJDK 17+ -| jetty-11.0.x | Maven 3.8.6+ | OpenJDK 11+ -| jetty-10.0.x | Maven 3.8.6+ | OpenJDK 11+ +| jetty-12.0.x | Maven 3.9.2+ | OpenJDK 17+ | OpenJDK 19 +| jetty-11.0.x | Maven 3.8.6+ | OpenJDK 11+ | OpenJDK 17 +| jetty-10.0.x | Maven 3.8.6+ | OpenJDK 11+ | OpenJDK 17 |=== To build the Jetty documentation, OpenJDK 19+ is required due to the use of the virtual thread APIs. @@ -72,6 +72,18 @@ Not all test cases are as timing independent as they should be, which can result You can help us track these flaky tests by opening an https://github.com/eclipse/jetty.project/issues[issue] when you come across one. ==== +[[cg-build-cache]] +=== Maven Build Cache + +Per default, the build is using the https://maven.apache.org/extensions/maven-build-cache-extension[Maven Build Cache extension] +this means you will use your local build cache, To disable it you can use the property + +[source, shell] +---- +$ mvn clean install -Dmaven.build.cache.enabled=false +---- + + [[cg-build-parallel]] === Executing tests in parallel diff --git a/jetty-core/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-core/jetty-alpn/jetty-alpn-client/pom.xml index e5fdd79431e..8d735ae7f11 100644 --- a/jetty-core/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-core/jetty-alpn/jetty-alpn-client/pom.xml @@ -24,12 +24,6 @@ - - - org.apache.maven.plugins - maven-source-plugin - diff --git a/jetty-core/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-core/jetty-alpn/jetty-alpn-server/pom.xml index 1e3cf753c03..d388b7877d3 100644 --- a/jetty-core/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-core/jetty-alpn/jetty-alpn-server/pom.xml @@ -13,12 +13,6 @@ - - - org.apache.maven.plugins - maven-source-plugin - org.apache.felix maven-bundle-plugin diff --git a/jetty-core/jetty-start/pom.xml b/jetty-core/jetty-start/pom.xml index 4bf6ba206a6..7983d86c988 100644 --- a/jetty-core/jetty-start/pom.xml +++ b/jetty-core/jetty-start/pom.xml @@ -83,6 +83,31 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack + process-test-resources + + unpack + + + + + org.eclipse.jetty + jetty-util + jar + false + + + ${project.build.directory}/jetty-util + true + + + + diff --git a/jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java b/jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java index 7bce0e220a8..3e5bf9816d8 100644 --- a/jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java +++ b/jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java @@ -163,7 +163,7 @@ public class PropertyPassingTest cp.append(pathSep); cp.append(MavenTestingUtils.getProjectDir("target/test-classes")); cp.append(pathSep); - cp.append(MavenTestingUtils.getProjectDir("../jetty-util/target/classes")); // TODO horrible hack! + cp.append(MavenTestingUtils.getProjectDir("target/jetty-util")); return cp.toString(); } diff --git a/jetty-core/jetty-util/pom.xml b/jetty-core/jetty-util/pom.xml index 5ab452c65ef..c8b28e1fd99 100644 --- a/jetty-core/jetty-util/pom.xml +++ b/jetty-core/jetty-util/pom.xml @@ -56,7 +56,7 @@ maven-surefire-plugin - ${settings.localRepository} + ${session.repositorySession.localRepository.basedir.absolutePath} @{argLine} ${jetty.surefire.argLine} --add-reads org.eclipse.jetty.util=org.eclipse.jetty.logging diff --git a/jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java b/jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java index 783c20339c3..334b775d817 100644 --- a/jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java +++ b/jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java @@ -1957,6 +1957,8 @@ public class XmlConfiguration } else if (arg.toLowerCase(Locale.ENGLISH).endsWith(".xml")) { + if (LOG.isDebugEnabled()) + LOG.debug("Parsing xml file {}", arg); // Create an XmlConfiguration XmlConfiguration configuration = new XmlConfiguration(ResourceFactory.of(mountContainer).newResource(arg)); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/pom.xml b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/pom.xml index 336028fc387..2c6bd15e5ef 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/pom.xml +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/pom.xml @@ -117,18 +117,36 @@ jetty-websocket-jetty-client test + + org.eclipse.jetty.ee9.demos + jetty-ee9-demo-jndi-webapp + ${project.version} + war + org.eclipse.jetty.ee10.demos jetty-ee10-demo-jsp-webapp ${project.version} war + + org.eclipse.jetty.ee10.demos + jetty-ee10-demo-simple-webapp + ${project.version} + war + org.eclipse.jetty.ee10.demos jetty-ee10-demo-spec-webapp ${project.version} war + + org.eclipse.jetty.ee10.demos + jetty-ee10-demo-async-rest-webapp + ${project.version} + war + @@ -137,8 +155,12 @@ maven-surefire-plugin - ${settings.localRepository} + ${project.version} + + ${session.repositorySession.localRepository.basedir.absolutePath} + ${project.version} + false diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JettyDemos.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JettyDemos.java index 17d4d7e5cc5..ef9b4ce0d06 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JettyDemos.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JettyDemos.java @@ -34,7 +34,7 @@ public class JettyDemos { private static final Logger LOG = LoggerFactory.getLogger(JettyDemos.class); private static final Path JETTY_DEMOS_DIR; - private static final String VERSION; + private static String VERSION = System.getProperty("jettyVersion", "unknown"); static { @@ -71,29 +71,27 @@ public class JettyDemos LOG.warn("Unable to resolve Jetty Demos location", th); } } - JETTY_DEMOS_DIR = demosDir; - String version = "unknown"; - Path pomFile = demosDir.resolve("pom.xml"); - try (Stream lineStream = Files.lines(pomFile)) + if (version.equals(VERSION)) { - String versionLine = lineStream - .filter((line) -> line.contains("")) - .findFirst() - .orElseThrow(() -> - { - throw new RuntimeException("Unable to find in " + pomFile); - }); + Path pomFile = demosDir.resolve("pom.xml"); + try (Stream lineStream = Files.lines(pomFile)) + { + String versionLine = lineStream + .filter((line) -> line.contains("")) + .findFirst() + .orElseThrow(() -> new RuntimeException("Unable to find in " + pomFile)); - version = versionLine.replaceAll("<[^>]*>", "").trim(); - } - catch (IOException e) - { - LOG.warn("Unable to find in " + pomFile, e); - } + version = versionLine.replaceAll("<[^>]*>", "").trim(); + } + catch (IOException e) + { + LOG.warn("Unable to find in " + pomFile, e); + } - VERSION = version; + VERSION = version; + } } private static Path asDirectory(String path) @@ -141,6 +139,33 @@ public class JettyDemos return JETTY_DEMOS_DIR; } + public static Path find(String path, MavenCoordinate mavenCoordinate) throws FileNotFoundException + { + try + { + return find(path); + } + catch (FileNotFoundException e) + { + //could be not in the target directory if restored from build cache + // but as the build always runs install the artifact should be there in local repository + } + //.repository/org/eclipse/jetty/ee9/demos/jetty-ee9-demo-jndi-webapp/12.0.0-SNAPSHOT/jetty-ee9-demo-jndi-webapp-12.0.0-SNAPSHOT.war + String version = mavenCoordinate.version().isEmpty() ? VERSION : mavenCoordinate.version(); + Path result = Paths.get(System.getProperty("mavenRepoPath", System.getProperty("user.home") + "/.m2/repository"), + mavenCoordinate.groupId().replaceAll("\\.", "/"), + mavenCoordinate.artifactId(), + version, + mavenCoordinate.artifactId() + "-" + version + "." + mavenCoordinate.packaging() + ); + if (!Files.exists(result)) + { + throw new FileNotFoundException(result.toString()); + } + return result; + } + + @Deprecated public static Path find(String path) throws FileNotFoundException { String expandedPath = path.replaceAll("@VER@", VERSION); @@ -152,6 +177,15 @@ public class JettyDemos return result; } + /** + * + * @param groupId Maven groupId + * @param artifactId Maven artifactId + * @param version can be null and default current project version will be used + * @param packaging Maven packaging (war, jar) + */ + public record MavenCoordinate(String groupId, String artifactId, String version, String packaging){} + public static void main(String... arg) { System.err.println("Jetty Demos Dir is " + JETTY_DEMOS_DIR); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java index 2bd495198e2..b42cb0d662b 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java @@ -146,7 +146,9 @@ public class LikeJettyXml Path testWebapp = webappsDir.resolve("test.war"); if (!Files.exists(testWebapp)) { - Path testWebappSrc = JettyDemos.find("jetty-ee10-demo-simple-webapp/target/jetty-ee10-demo-simple-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee10.demos", + "jetty-ee10-demo-simple-webapp", "", "war"); + Path testWebappSrc = JettyDemos.find("jetty-ee10-demo-simple-webapp/target/jetty-ee10-demo-simple-webapp-@VER@.war", mavenCoordinate); Files.copy(testWebappSrc, testWebapp); } diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebApp.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebApp.java index b9a4083c0f1..2638206be79 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebApp.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebApp.java @@ -39,7 +39,9 @@ public class OneWebApp // PlusConfiguration) to choosing where the webapp will unpack itself. WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("demo-async-rest/demo-async-rest-webapp/target/demo-async-rest-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee10.demos", + "jetty-ee10-demo-async-rest-webapp", "", "war"); + Path warFile = JettyDemos.find("demo-async-rest/demo-async-rest-webapp/target/demo-async-rest-webapp-@VER@.war", mavenCoordinate); webapp.setWar(warFile.toString()); // A WebAppContext is a ContextHandler as well so it needs to be set to diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJsp.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJsp.java index 419446e4ce9..c27b9a31ee5 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJsp.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJsp.java @@ -44,7 +44,9 @@ public class OneWebAppWithJsp // the webapp will unpack itself. WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("demo-jsp-webapp/target/demo-jsp-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee10.demos", + "jetty-ee10-demo-jsp-webapp", "", "war"); + Path warFile = JettyDemos.find("demo-jsp-webapp/target/demo-jsp-webapp-@VER@.war", mavenCoordinate); webapp.setWarResource(webapp.getResourceFactory().newResource(warFile)); webapp.setExtractWAR(true); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotations.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotations.java index 402f3b250a5..fd4718ebe00 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotations.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotations.java @@ -45,7 +45,9 @@ public class ServerWithAnnotations webapp.addConfiguration(new EnvConfiguration(), new PlusConfiguration(), new AnnotationConfiguration()); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("ee10-demo-spec/ee10-demo-spec-webapp/target/demo-spec-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee10.demos", + "jetty-ee10-demo-spec-webapp", "", "war"); + Path warFile = JettyDemos.find("ee10-demo-spec/ee10-demo-spec-webapp/target/demo-spec-webapp-@VER@.war", mavenCoordinate); webapp.setWar(warFile.toString()); webapp.setAttribute( "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJNDI.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJNDI.java index afa247adbc0..83aa9ff6c02 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJNDI.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJNDI.java @@ -35,7 +35,9 @@ public class ServerWithJNDI // Create a WebApp WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path testJndiWar = JettyDemos.find("jetty-ee10-demo-jndi-webapp/target/jetty-ee10-demo-jndi-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee10.demos", + "jetty-ee10-demo-jndi-webapp", "", "war"); + Path testJndiWar = JettyDemos.find("jetty-ee10-demo-jndi-webapp/target/jetty-ee10-demo-jndi-webapp-@VER@.war", mavenCoordinate); webapp.setWarResource(webapp.getResourceFactory().newResource(testJndiWar)); server.setHandler(webapp); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/pom.xml b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/pom.xml index b026d91259c..7880273eebd 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/pom.xml +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/pom.xml @@ -123,6 +123,46 @@ + + unpack-jetty-ee10-demo-container-initializer + process-test-resources + + copy + + + + + org.eclipse.jetty.ee10.demos + jetty-ee10-demo-container-initializer + jar + false + ${project.build.directory}/ + jetty-ee10-demo-container-initializer.jar + + + true + + + + unpack-jetty-ee10-demo-web-fragment + process-test-resources + + copy + + + + + org.eclipse.jetty.ee10.demos + jetty-ee10-demo-web-fragment + jar + false + ${project.build.directory}/ + jetty-ee10-demo-web-fragment.jar + + + true + + diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/test/java/org/eclipse/jetty/ee10/demos/SpecWebAppTest.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/test/java/org/eclipse/jetty/ee10/demos/SpecWebAppTest.java index 308f7e8248f..0fe0a4c394e 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/test/java/org/eclipse/jetty/ee10/demos/SpecWebAppTest.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/test/java/org/eclipse/jetty/ee10/demos/SpecWebAppTest.java @@ -118,13 +118,22 @@ public class SpecWebAppTest private void copyDependency(String depName, Path libDir) throws IOException { + // sinply use copy:dependency from maven... + Path targetDir = MavenPaths.projectBase().resolve("target"); + Path jarFile = targetDir.resolve(depName + ".jar"); + if (Files.exists(jarFile)) + { + Files.copy(jarFile, libDir.resolve(depName + ".jar")); + return; + } + Path depPath = MavenPaths.projectBase().resolve("../" + depName).normalize(); if (!Files.isDirectory(depPath)) fail("Dependency not found: " + depPath); Path outputJar = libDir.resolve(depName + ".jar"); + Map env = new HashMap<>(); env.put("create", "true"); - URI uri = URI.create("jar:" + outputJar.toUri().toASCIIString()); try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { diff --git a/jetty-ee10/jetty-ee10-jspc-maven-plugin/pom.xml b/jetty-ee10/jetty-ee10-jspc-maven-plugin/pom.xml index 7bb7eaeb937..368c7eb8136 100644 --- a/jetty-ee10/jetty-ee10-jspc-maven-plugin/pom.xml +++ b/jetty-ee10/jetty-ee10-jspc-maven-plugin/pom.xml @@ -44,8 +44,6 @@ - true - true ${maven.surefire.plugin.version} diff --git a/jetty-ee10/jetty-ee10-maven-plugin/pom.xml b/jetty-ee10/jetty-ee10-maven-plugin/pom.xml index c227e1e9022..9414b48b822 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/pom.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/pom.xml @@ -87,6 +87,33 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy + + + + + + + org.eclipse.jetty + jetty-home + zip + false + ${project.build.directory} + ${jettyHomeZipFileName} + + + false + true + + org.apache.maven.plugins maven-invoker-plugin @@ -102,10 +129,16 @@ + + org.eclipse.jetty:jetty-slf4j-impl:${project.version} + org.eclipse.jetty.ee10:jetty-ee10-apache-jsp:${project.version} + org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl:${project.version} + org.eclipse.jetty.ee10:jetty-ee10-webapp:${project.version} + org.eclipse.jetty:jetty-server:${project.version} + org.eclipse.jetty:jetty-deploy:${project.version} + org.eclipse.jetty:jetty-home:${project.version}:zip + org.eclipse.jetty.maven.its.ee10 - true - true - true it-parent-pom/pom.xml @@ -121,8 +154,9 @@ ${jetty.stopKey} ${jetty.stopPort} ${maven.surefire.plugin.version} + ${localRepoPath} + ${jettyHomeZip} - src/it/settings.xml clean diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-cdi-start-forked/pom.xml b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-cdi-start-forked/pom.xml index ac0f456a1bb..165405d1c5f 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-cdi-start-forked/pom.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-cdi-start-forked/pom.xml @@ -72,9 +72,9 @@ jetty-ee10-maven-plugin - org.eclipse.jetty - jetty-slf4j-impl - ${jetty.version} + org.eclipse.jetty + jetty-slf4j-impl + ${jetty.version} diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-webapp/pom.xml b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-webapp/pom.xml index 77e4ee370ca..5a162c96114 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-webapp/pom.xml @@ -113,14 +113,15 @@ ${basedir}/src/base - ${java.home}/bin/java true ${jetty.port.file} 0 + @localRepoPath@ ee10-apache-jsp,ee10-glassfish-jstl,ee10-testmod,resources --debug + @jettyHomeZip@ diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-webapp/pom.xml b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-webapp/pom.xml index ba295d5a849..1051612dd51 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-webapp/pom.xml @@ -136,6 +136,7 @@ ${jetty.port.file} 0 + @jettyHomeZip@ ee10-apache-jsp,ee10-glassfish-jstl,ee10-testmod,resources diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/it/settings.xml b/jetty-ee10/jetty-ee10-maven-plugin/src/it/settings.xml index d64bdb89034..e62d9bab8b8 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/it/settings.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/it/settings.xml @@ -1,6 +1,7 @@ + @localRepoPath@ it-repo diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java index 7f44a2bafda..0ad51181b20 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java @@ -306,6 +306,12 @@ public abstract class AbstractWebAppMojo extends AbstractMojo */ @Parameter protected File jettyHome; + + /** + * Location of Jetty home zipped + */ + @Parameter + public File jettyHomeZip; /** * Location of jetty base directory @@ -555,7 +561,7 @@ public abstract class AbstractWebAppMojo extends AbstractMojo jetty.setContextXml(contextXml); if (jettyHome == null) - jetty.setJettyHomeZip(mavenProjectHelper.resolveArtifact(JETTY_HOME_GROUPID, JETTY_HOME_ARTIFACTID, plugin.getVersion(), "zip")); + jetty.setJettyHomeZip(jettyHomeZip != null ? jettyHomeZip : mavenProjectHelper.resolveArtifact(JETTY_HOME_GROUPID, JETTY_HOME_ARTIFACTID, plugin.getVersion(), "zip")); jetty.version = plugin.getVersion(); jetty.setJettyHome(jettyHome); diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyHomeForker.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyHomeForker.java index f6bb7d37077..2d988f8a21b 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyHomeForker.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyHomeForker.java @@ -186,7 +186,7 @@ public class JettyHomeForker extends AbstractForker //add any args to the jvm if (StringUtil.isNotBlank(jvmArgs)) { - Arrays.stream(jvmArgs.split(" ")).filter(a -> StringUtil.isNotBlank(a)).forEach((a) -> cmd.add(a.trim())); + Arrays.stream(jvmArgs.split(" ")).filter(StringUtil::isNotBlank).forEach((a) -> cmd.add(a.trim())); } cmd.add("-jar"); @@ -225,7 +225,7 @@ public class JettyHomeForker extends AbstractForker //put any other jetty options onto the command line if (StringUtil.isNotBlank(jettyOptions)) { - Arrays.stream(jettyOptions.split(" ")).filter(a -> StringUtil.isNotBlank(a)).forEach((a) -> cmd.add(a.trim())); + Arrays.stream(jettyOptions.split(" ")).filter(StringUtil::isNotBlank).forEach((a) -> cmd.add(a.trim())); } //put any jetty properties onto the command line diff --git a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/pom.xml b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/pom.xml index bbe6c7128e2..d773a524db6 100644 --- a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/pom.xml +++ b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/pom.xml @@ -387,6 +387,13 @@ webbundle test + + org.eclipse.jetty.ee10.demos + jetty-ee10-demo-jetty-webapp + ${project.version} + war + test + org.eclipse.jetty.ee10.demos jetty-ee10-demo-jetty-webapp @@ -505,7 +512,7 @@ ${skipTests} - ${settings.localRepository} + ${session.repositorySession.localRepository.basedir.absolutePath} ${env.GLOBAL_MVN_SETTINGS} -Dconscrypt-version=${conscrypt.version} diff --git a/jetty-ee8/jetty-ee8-jspc-maven-plugin/pom.xml b/jetty-ee8/jetty-ee8-jspc-maven-plugin/pom.xml index 5119e9ebb46..516fe2ee4c2 100644 --- a/jetty-ee8/jetty-ee8-jspc-maven-plugin/pom.xml +++ b/jetty-ee8/jetty-ee8-jspc-maven-plugin/pom.xml @@ -45,8 +45,6 @@ - true - true ${maven.surefire.plugin.version} diff --git a/jetty-ee8/jetty-ee8-maven-plugin/pom.xml b/jetty-ee8/jetty-ee8-maven-plugin/pom.xml index 32e16d99fed..5dde5f34f13 100644 --- a/jetty-ee8/jetty-ee8-maven-plugin/pom.xml +++ b/jetty-ee8/jetty-ee8-maven-plugin/pom.xml @@ -102,8 +102,6 @@ org.eclipse.jetty.maven.its.ee8 - true - true it-parent-pom/pom.xml diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml index 074c99d950a..db79f9da41d 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml @@ -126,18 +126,36 @@ test --> + + org.eclipse.jetty.ee9.demos + jetty-ee9-demo-jndi-webapp + ${project.version} + war + org.eclipse.jetty.ee9.demos jetty-ee9-demo-jsp-webapp ${project.version} war + + org.eclipse.jetty.ee9.demos + jetty-ee9-demo-simple-webapp + ${project.version} + war + org.eclipse.jetty.ee9.demos jetty-ee9-demo-spec-webapp ${project.version} war + + org.eclipse.jetty.ee9.demos + jetty-ee9-demo-async-rest-webapp + ${project.version} + war + @@ -146,8 +164,12 @@ maven-surefire-plugin - ${settings.localRepository} + ${project.version} + + ${session.repositorySession.localRepository.basedir.absolutePath} + ${project.version} + false diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JettyDemos.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JettyDemos.java index 617cf1ac2b1..4f6509923b7 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JettyDemos.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JettyDemos.java @@ -34,7 +34,7 @@ public class JettyDemos { private static final Logger LOG = LoggerFactory.getLogger(JettyDemos.class); private static final Path JETTY_DEMOS_DIR; - private static final String VERSION; + private static String VERSION = System.getProperty("jettyVersion", "unknown"); static { @@ -71,29 +71,27 @@ public class JettyDemos LOG.warn("Unable to resolve Jetty Demos location", th); } } - JETTY_DEMOS_DIR = demosDir; - String version = "unknown"; - Path pomFile = demosDir.resolve("pom.xml"); - try (Stream lineStream = Files.lines(pomFile)) + if (version.equals(VERSION)) { - String versionLine = lineStream - .filter((line) -> line.contains("")) - .findFirst() - .orElseThrow(() -> - { - throw new RuntimeException("Unable to find in " + pomFile); - }); + Path pomFile = demosDir.resolve("pom.xml"); + try (Stream lineStream = Files.lines(pomFile)) + { + String versionLine = lineStream + .filter((line) -> line.contains("")) + .findFirst() + .orElseThrow(() -> new RuntimeException("Unable to find in " + pomFile)); - version = versionLine.replaceAll("<[^>]*>", "").trim(); - } - catch (IOException e) - { - LOG.warn("Unable to find in " + pomFile, e); - } + version = versionLine.replaceAll("<[^>]*>", "").trim(); + } + catch (IOException e) + { + LOG.warn("Unable to find in " + pomFile, e); + } - VERSION = version; + VERSION = version; + } } private static Path asDirectory(String path) @@ -141,6 +139,33 @@ public class JettyDemos return JETTY_DEMOS_DIR; } + public static Path find(String path, MavenCoordinate mavenCoordinate) throws FileNotFoundException + { + try + { + return find(path); + } + catch (FileNotFoundException e) + { + //could be not in the target directory if restored from build cache + // but as the build always runs install the artifact should be there in local repository + } + //.repository/org/eclipse/jetty/ee9/demos/jetty-ee9-demo-jndi-webapp/12.0.0-SNAPSHOT/jetty-ee9-demo-jndi-webapp-12.0.0-SNAPSHOT.war + String version = mavenCoordinate.version().isEmpty() ? VERSION : mavenCoordinate.version(); + Path result = Paths.get(System.getProperty("mavenRepoPath", System.getProperty("user.home") + "/.m2/repository"), + mavenCoordinate.groupId().replaceAll("\\.", "/"), + mavenCoordinate.artifactId(), + version, + mavenCoordinate.artifactId() + "-" + version + "." + mavenCoordinate.packaging() + ); + if (!Files.exists(result)) + { + throw new FileNotFoundException(result.toString()); + } + return result; + } + + @Deprecated public static Path find(String path) throws FileNotFoundException { String expandedPath = path.replaceAll("@VER@", VERSION); @@ -152,8 +177,11 @@ public class JettyDemos return result; } + public record MavenCoordinate(String groupId, String artifactId, String version, String packaging){} + public static void main(String... arg) { System.err.println("Jetty Demos Dir is " + JETTY_DEMOS_DIR); } } + diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebApp.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebApp.java index c4a7d003469..bf975d2e0e3 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebApp.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebApp.java @@ -39,7 +39,9 @@ public class OneWebApp // PlusConfiguration) to choosing where the webapp will unpack itself. WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-webapp/target/jetty-ee9-demo-async-rest-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee9.demos", + "jetty-ee9-demo-async-rest-webapp", "", "war"); + Path warFile = JettyDemos.find("jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-webapp/target/jetty-ee9-demo-async-rest-webapp-@VER@.war", mavenCoordinate); webapp.setWar(warFile.toString()); // A WebAppContext is a ContextHandler as well so it needs to be set to diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java index 6d07e858459..d10b9b57552 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java @@ -44,7 +44,9 @@ public class OneWebAppWithJsp // the webapp will unpack itself. WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("jetty-ee9-demo-jsp-webapp/target/jetty-ee9-demo-jsp-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee9.demos", + "jetty-ee9-demo-jsp-webapp", "", "war"); + Path warFile = JettyDemos.find("jetty-ee9-demo-jsp-webapp/target/jetty-ee9-demo-jsp-webapp-@VER@.war", mavenCoordinate); webapp.setWarResource(webapp.getResourceFactory().newResource(warFile)); webapp.setExtractWAR(true); diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java index f8041369f3e..e7815e8204a 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java @@ -45,7 +45,9 @@ public class ServerWithAnnotations webapp.addConfiguration(new EnvConfiguration(), new PlusConfiguration(), new AnnotationConfiguration()); webapp.setContextPath("/"); - Path warFile = JettyDemos.find("jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/target/jetty-ee9-demo-spec-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee9.demos", + "jetty-ee9-demo-spec-webapp", "", "war"); + Path warFile = JettyDemos.find("jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/target/jetty-ee9-demo-spec-webapp-@VER@.war", mavenCoordinate); webapp.setWar(warFile.toString()); webapp.setAttribute( diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJNDI.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJNDI.java index 986da43f571..0232eac7ab1 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJNDI.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJNDI.java @@ -35,7 +35,9 @@ public class ServerWithJNDI // Create a WebApp WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); - Path testJndiWar = JettyDemos.find("jetty-ee9-demo-jndi-webapp/target/jetty-ee9-demo-jndi-webapp-@VER@.war"); + JettyDemos.MavenCoordinate mavenCoordinate = new JettyDemos.MavenCoordinate("org.eclipse.jetty.ee9.demos", + "jetty-ee9-demo-jndi-webapp", "", "war"); + Path testJndiWar = JettyDemos.find("jetty-ee9-demo-jndi-webapp/target/jetty-ee9-demo-jndi-webapp-@VER@.war", mavenCoordinate); webapp.setWarResource(webapp.getResourceFactory().newResource(testJndiWar)); server.setHandler(webapp); diff --git a/jetty-ee9/jetty-ee9-jspc-maven-plugin/pom.xml b/jetty-ee9/jetty-ee9-jspc-maven-plugin/pom.xml index 61c78aceb4d..d64fc4ec987 100644 --- a/jetty-ee9/jetty-ee9-jspc-maven-plugin/pom.xml +++ b/jetty-ee9/jetty-ee9-jspc-maven-plugin/pom.xml @@ -44,8 +44,6 @@ - true - true ${maven.surefire.plugin.version} diff --git a/jetty-ee9/jetty-ee9-maven-plugin/pom.xml b/jetty-ee9/jetty-ee9-maven-plugin/pom.xml index 7d03afae271..02d637a41e9 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/pom.xml +++ b/jetty-ee9/jetty-ee9-maven-plugin/pom.xml @@ -75,6 +75,33 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy + + + + + + + org.eclipse.jetty + jetty-home + zip + false + ${project.build.directory} + ${jettyHomeZipFileName} + + + false + true + + org.apache.maven.plugins maven-jar-plugin @@ -102,8 +129,6 @@ org.eclipse.jetty.maven.its.ee9 - true - true it-parent-pom/pom.xml @@ -122,8 +147,9 @@ ${jetty.stopPort} ${maven.surefire.plugin.version} ${jetty.servlet.api.version} + ${localRepoPath} + ${jettyHomeZip} - src/it/settings.xml clean diff --git a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java index 50a63aa961e..7feba59cf10 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java +++ b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java @@ -305,6 +305,12 @@ public abstract class AbstractWebAppMojo extends AbstractMojo */ @Parameter protected File jettyHome; + + /** + * Location of Jetty home zipped + */ + @Parameter + public File jettyHomeZip; /** * Location of jetty base directory @@ -554,7 +560,7 @@ public abstract class AbstractWebAppMojo extends AbstractMojo jetty.setContextXml(contextXml); if (jettyHome == null) - jetty.setJettyHomeZip(mavenProjectHelper.resolveArtifact(JETTY_HOME_GROUPID, JETTY_HOME_ARTIFACTID, plugin.getVersion(), "zip")); + jetty.setJettyHomeZip(jettyHomeZip != null ? jettyHomeZip : mavenProjectHelper.resolveArtifact(JETTY_HOME_GROUPID, JETTY_HOME_ARTIFACTID, plugin.getVersion(), "zip")); jetty.version = plugin.getVersion(); jetty.setJettyHome(jettyHome); diff --git a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/pom.xml b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/pom.xml index bb2abca370a..f2ac5dc055c 100644 --- a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/pom.xml +++ b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/pom.xml @@ -383,6 +383,13 @@ webbundle test + + org.eclipse.jetty.ee9.demos + jetty-ee9-demo-jetty-webapp + ${project.version} + war + test + org.eclipse.jetty.ee9.demos jetty-ee9-demo-jetty-webapp @@ -501,7 +508,7 @@ ${skipTests} - ${settings.localRepository} + ${session.repositorySession.localRepository.basedir.absolutePath} ${env.GLOBAL_MVN_SETTINGS} -Dconscrypt-version=${conscrypt.version} diff --git a/pom.xml b/pom.xml index 3525735c5c6..25d04f5629a 100644 --- a/pom.xml +++ b/pom.xml @@ -107,6 +107,7 @@ 3.1.4 10.3.6 3.9.0 + 1.0.1 0.13.1 1.9.15 3.9.0 @@ -191,6 +192,8 @@ false false ${project.build.directory}/local-repo + jetty-home.zip + ${project.build.directory}/${jettyHomeZipFileName} -Dfile.encoding=UTF-8 -Duser.language=en -Duser.region=US -Djava.io.tmpdir=${project.build.directory} -showversion -Xmx6g -Xms4g -Xlog:gc:stderr:time,level,tags true /tmp @@ -201,6 +204,8 @@ 11.0.14.Final + + 2023-06-05T23:12:49Z @@ -235,6 +240,13 @@ + + + org.apache.maven.extensions + maven-build-cache-extension + ${maven-build-cache.version} + + org.apache.maven.plugins @@ -275,8 +287,8 @@ - [3.8.4,) - [ERROR] OLD MAVEN [${maven.version}] in use, Jetty ${project.version} requires Maven 3.8.4 or newer + [3.9.2,) + [ERROR] OLD MAVEN [${maven.version}] in use, Jetty ${project.version} requires Maven 3.9.2 or newer [17,) @@ -613,6 +625,7 @@ maven-invoker-plugin ${maven.invoker.plugin.version} + true ${invoker.mergeUserSettings} true org.eclipse.jetty.maven.its @@ -626,8 +639,8 @@ ${project.build.directory}/it ${localRepoPath} ${settingsPath} - true ${skipTests} + true */pom.xml @@ -2041,7 +2054,6 @@ ci 0 - ${env.GLOBAL_MVN_SETTINGS} false Medium @@ -2049,7 +2061,8 @@ Default false org.eclipse.jetty.* - + + https://repo.maven.apache.org/maven2/ 120 @@ -2081,6 +2094,18 @@ + + org.apache.maven.plugins + maven-javadoc-plugin + + + package + + jar + + + + com.github.spotbugs spotbugs-maven-plugin diff --git a/tests/test-distribution/pom.xml b/tests/test-distribution/pom.xml index f1278138273..6ff5b5bef90 100644 --- a/tests/test-distribution/pom.xml +++ b/tests/test-distribution/pom.xml @@ -103,7 +103,7 @@ maven-surefire-plugin - ${settings.localRepository} + ${session.repositorySession.localRepository.basedir.absolutePath} ${project.version} ${hazelcast.version} ${mariadb.docker.version}