diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 88b18fb8ba1..29a15d50215 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -14,6 +14,7 @@ 3.4 ${project.groupId}.maven.plugin false + FOOBEER @@ -215,11 +216,36 @@ verify ${project.build.directory}/local-repo src/it/settings.xml + + ${jetty.stopKey} + ${jetty.stopPort} + ${jetty.runPort} + clean + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + reserve-ports + pre-integration-test + + reserve-network-port + + + + jetty.stopPort + jetty.runPort + + + + + diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/invoker.properties b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/invoker.properties new file mode 100644 index 00000000000..2fc6409821b --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/invoker.properties @@ -0,0 +1 @@ +invoker.goals = test -fae \ No newline at end of file diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/pom.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/pom.xml new file mode 100644 index 00000000000..594ddba4c8d --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + + com.webtide.jetty.its.jetty-run-forked-mojo-it + jetty-simple-project + 0.0.1-SNAPSHOT + + + jetty-simple-base + jar + + Jetty :: Simple :: Base + + + + + javax.servlet + javax.servlet-api + jar + provided + + + + org.slf4j + slf4j-api + + + + commons-io + commons-io + + + + org.eclipse.jetty.toolchain + jetty-perf-helper + 1.0.5 + + + + com.fasterxml.jackson.core + jackson-databind + 2.8.1 + + + + + diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java new file mode 100644 index 00000000000..a6d2a3e256d --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java @@ -0,0 +1,45 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + + +package com.webtide.jetty.its.jetty_run_mojo_it; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * + */ +@WebServlet("/hello") +public class HelloServlet + extends HttpServlet +{ + + @Override + protected void doGet( HttpServletRequest req, HttpServletResponse resp ) + throws ServletException, IOException + { + String who = req.getParameter( "name" ); + + resp.getWriter().write( "hello " + (who == null ? "unknown" : who) ); + } +} diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml new file mode 100644 index 00000000000..21f5b01073a --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/pom.xml @@ -0,0 +1,133 @@ + + + 4.0.0 + + + com.webtide.jetty.its.jetty-run-forked-mojo-it + jetty-simple-project + 0.0.1-SNAPSHOT + + + jetty-simple-webapp + war + + Jetty :: Simple :: Webapp + + + @jetty.runPort@ + + + + + + com.webtide.jetty.its.jetty-run-forked-mojo-it + jetty-simple-base + + + + org.eclipse.jetty + jetty-servlet + provided + + + + org.eclipse.jetty + jetty-client + @project.version@ + test + + + + junit + junit + 4.12 + test + + + + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin-version} + + false + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.20 + + + @jetty.runPort@ + + + + + org.eclipse.jetty + jetty-maven-plugin + + @jetty.stopPort@ + @jetty.stopKey@ + + + + start-jetty + test-compile + + run-forked + + + true + false + ${project.build.directory}/config/jetty.xml + + + + stop-jetty + test + + stop + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.0.2 + + + copy-resources-jetty + generate-resources + + copy-resources + + + ${project.build.directory}/config + + + ${basedir}/src/config/ + true + + **/** + + + + + + + + + + + + diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/config/jetty.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/config/jetty.xml new file mode 100644 index 00000000000..a057f0664eb --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/config/jetty.xml @@ -0,0 +1,33 @@ + + + + + + https + + 32768 + 8192 + 8192 + 512 + + + + + + + + + + + + + + + + + + 30000 + + + + \ No newline at end of file diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/main/webapp/WEB-INF/web.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000000..2a5ac4b71bf --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + Jetty Simple Webapp run-mojo-it + diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java new file mode 100644 index 00000000000..27d9d55c787 --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java @@ -0,0 +1,52 @@ +// +// ======================================================================== +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package com.webtide.jetty.its.jetty_run_mojo_it; + +import org.eclipse.jetty.client.HttpClient; +import org.junit.Assert; +import org.junit.Test; + +/** + * + */ +public class TestHelloServlet +{ + @Test + public void hello_servlet() + throws Exception + { + int port = Integer.getInteger( "jetty.runPort" ); + System.out.println( "port used:" + port ); + HttpClient httpClient = new HttpClient(); + try + { + httpClient.start(); + + String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString(); + + System.out.println( "httpResponse:" + response ); + + Assert.assertEquals( "hello beer", response.trim() ); + } + finally + { + httpClient.stop(); + } + } +} diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/pom.xml b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/pom.xml new file mode 100644 index 00000000000..e45f2ad1fcd --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/pom.xml @@ -0,0 +1,89 @@ + + + 4.0.0 + + com.webtide.jetty.its.jetty-run-forked-mojo-it + jetty-simple-project + 0.0.1-SNAPSHOT + pom + + Jetty :: Simple + + + UTF-8 + UTF-8 + 1.8 + 3.0.0 + + + + jetty-simple-base + jetty-simple-webapp + + + + + + + com.webtide.jetty.its.jetty-run-forked-mojo-it + jetty-simple-base + ${project.version} + + + + javax.servlet + javax.servlet-api + 3.1.0 + jar + provided + + + + org.slf4j + slf4j-api + 1.7.21 + + + + commons-io + commons-io + 2.5 + + + + org.eclipse.jetty + jetty-servlet + @project.version@ + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-resources-plugin + 3.0.1 + + + org.eclipse.jetty + jetty-maven-plugin + @project.version@ + + + + + + diff --git a/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/postbuild.foo b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/postbuild.foo new file mode 100644 index 00000000000..134e91137c7 --- /dev/null +++ b/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/postbuild.foo @@ -0,0 +1,8 @@ + +Socket s=new Socket(InetAddress.getByName("127.0.0.1"),Integer.getInteger( "jetty.runPort" )); +s.setSoLinger(false, 0); + +OutputStream out=s.getOutputStream(); +out.write((System.getProperty( "jetty.stopKey" )+"\r\n"+command+"\r\n").getBytes()); +out.flush(); +s.close() \ No newline at end of file diff --git a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java index bb6915814df..a6d2a3e256d 100644 --- a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java +++ b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/com/webtide/jetty/its/jetty_run_mojo_it/HelloServlet.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 @@ -16,6 +16,7 @@ // ======================================================================== // + package com.webtide.jetty.its.jetty_run_mojo_it; import javax.servlet.ServletException; diff --git a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml index a11175216c8..ce4d50f13ec 100644 --- a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/pom.xml @@ -57,6 +57,16 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 2.20 + + + @jetty.runPort@ + + + org.eclipse.jetty jetty-maven-plugin @@ -69,9 +79,8 @@ true - ${project.build.directory}/jetty.properties - 0 + @jetty.runPort@ diff --git a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java index 699c3171145..1ec2da6ff78 100644 --- a/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java +++ b/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-webapp/src/test/java/com/webtide/jetty/its/jetty_run_mojo_it/TestHelloServlet.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 @@ -16,18 +16,13 @@ // ======================================================================== // + package com.webtide.jetty.its.jetty_run_mojo_it; import org.eclipse.jetty.client.HttpClient; import org.junit.Assert; import org.junit.Test; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Properties; - /** * */ @@ -37,16 +32,8 @@ public class TestHelloServlet public void hello_servlet() throws Exception { - - Path path = Paths.get( "target/jetty.properties" ); - int port; - try (InputStream inputStream = Files.newInputStream( path )) - { - Properties properties = new Properties(); - properties.load( inputStream ); - port = Integer.parseInt( properties.getProperty( "port" ) ); - } - + int port = Integer.getInteger( "jetty.runPort" ); + System.out.println( "port used:" + port ); HttpClient httpClient = new HttpClient(); try { diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/AbstractJettyMojo.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/AbstractJettyMojo.java index ae15f544235..ef9dbb2674a 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/AbstractJettyMojo.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/AbstractJettyMojo.java @@ -280,14 +280,6 @@ public abstract class AbstractJettyMojo extends AbstractMojo protected ServerSupport serverSupport; - - /** - * Will dump port in a properties file with key port. - * If empty no file generated - * @parameter - */ - protected String propertiesPortFilePath; - /** *

* Determines whether or not the server blocks when started. The default @@ -444,10 +436,10 @@ public abstract class AbstractJettyMojo extends AbstractMojo { // check that its port was set - if (httpConnector.getPort() < 0) + if (httpConnector.getPort() <= 0) { //use any jetty.http.port settings provided - String tmp = System.getProperty(MavenServerConnector.PORT_SYSPROPERTY, + String tmp = System.getProperty(MavenServerConnector.PORT_SYSPROPERTY, // System.getProperty("jetty.port", MavenServerConnector.DEFAULT_PORT_STR)); httpConnector.setPort(Integer.parseInt(tmp.trim())); } @@ -474,25 +466,7 @@ public abstract class AbstractJettyMojo extends AbstractMojo // start Jetty this.server.start(); - if (httpConnector != null) - { - int port = httpConnector.getLocalPort(); - getLog().info( "Started Jetty Server on port: " + port ); - if (propertiesPortFilePath != null) - { - Path propertiesPath = Paths.get( propertiesPortFilePath); - Files.deleteIfExists(propertiesPath); - try(OutputStream outputStream = Files.newOutputStream( propertiesPath )) - { - Properties properties = new Properties( ); - properties.put( "port", Integer.toString( port ) ); - properties.store( outputStream, "Eclipse Jetty Maven Plugin port used" ); - } - } - } else - { - getLog().info( "Started Jetty Server" ); - } + getLog().info( "Started Jetty Server" ); if ( dumpOnStart ) { diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunForkedMojo.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunForkedMojo.java index c4d03008abf..6e6b35b46a3 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunForkedMojo.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunForkedMojo.java @@ -44,6 +44,7 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.descriptor.PluginDescriptor; +import org.apache.maven.project.MavenProject; import org.eclipse.jetty.annotations.AnnotationConfiguration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.IO; @@ -169,10 +170,18 @@ public class JettyRunForkedMojo extends JettyRunMojo } } } - - - + + @Override + /** + * we o + */ + protected MavenProject getProjectReferences( Artifact artifact, MavenProject project ) + { + + return null; + } + /** * ConsoleStreamer * @@ -349,7 +358,7 @@ public class JettyRunForkedMojo extends JettyRunMojo builder.directory(project.getBasedir()); if (PluginLog.getLog().isDebugEnabled()) - PluginLog.getLog().debug(Arrays.toString(cmd.toArray())); + PluginLog.getLog().debug("Forked cli:"+Arrays.toString(cmd.toArray())); PluginLog.getLog().info("Forked process starting"); diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunMojo.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunMojo.java index cdedd33c921..00a6b9f3ec8 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunMojo.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunMojo.java @@ -626,7 +626,7 @@ public class JettyRunMojo extends AbstractJettyMojo } - private MavenProject getProjectReferences( Artifact artifact, MavenProject project ) + protected MavenProject getProjectReferences( Artifact artifact, MavenProject project ) { if ( project.getProjectReferences() == null || project.getProjectReferences().isEmpty() ) { diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Starter.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Starter.java index 040a58202cf..37a155f6b89 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Starter.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Starter.java @@ -246,7 +246,7 @@ public class Starter Set matchedWars = new HashSet(); //process any overlays and the war type artifacts - List overlays = new ArrayList(); + List overlays = new ArrayList<>(); for (OverlayConfig config:orderedConfigs.values()) { //overlays can be individually skipped @@ -302,7 +302,7 @@ public class Starter // - the equivalent of web-inf lib - str = (String)props.getProperty("lib.jars"); + str = props.getProperty("lib.jars"); if (str != null && !"".equals(str.trim())) { List jars = new ArrayList();