I want to make test end to end with angular so I try to run a embedded jetty.
First, I have created this conf in pom.xml:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
<contextPath>/</contextPath>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>29439</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
but the test are blocked with karma e2e waiting a response from the jetty. If I try to browse localhost:29439 there is nothing.
As It's very hard to debug, I tried to upgrade to a new jetty version but it was the road to hell :(
For exemple, the following conf keeps giving me NoClassDefFound error:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.6.14.v20131031</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>STOP</stopKey>
<stopPort>9999</stopPort>
<webApp>
<contextPath>/</contextPath>
</webApp>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>29439</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>7.6.14.v20131031</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
Any solution or tips will help, either with debugging the 1st version or make the 2nd version works.
A working pom.xml for you.
This will do the integration phase start/stop, with logging configured, as well as the supporting
$ mvn jetty:run
on a Servlet 2.5 webapp.Working Example
A working example webapp has been uploaded to github.
https://github.com/jetty-project/jetty-maven-plugin-examples
See the webapp-2.5 sub-project
To build the war
To run the jetty server using your jetty-maven-plugin configuration
Goto your browser and hit any of the following URLs to see it working.
http://localhost:28080/
- simple html response fromsrc/main/webapp/index.html
http://localhost:28080/time
- simple servlet response fromorg.eclipse.demo.TimeServlet
http://localhost:28080/flarnsworth
- an invalid reference, so this will trigger the<error-page>
handling and return a response fromorg.eclipse.jetty.demo.ErrorServlet
http://localhost:28080/dump.jsp
- a jsp response fromsrc/main/webapp/dump.jsp