Maillot de service web RESTful gradle d'installation
Je suis coincé avec la création d'un projet gradle pour un service web RESTful en utilisant le maillot de la bibliothèque. La configuration de projet doit être capable de lancer le service à l'intérieur d'un serveur d'applications jetty. J'ai déjà trouvé une ressource: https://github.com/ziroby/jetty-gradle-hello-world
Mon problème avec cette solution est qu'il utilise une version obsolète de jersey. J'ai besoin d'au moins la version 2(de préférence la dernière 2.14). J'ai essayé de rechercher de nouvelles versions sur maven central, mais dans la version 2 beaucoup d'artefact noms ont été changés, et je ne suis pas en mesure de le configurer correctement.
Edit:
Je n'ai pas spécialement besoin d'un serveur jetty dans mon projet. Il peut être n'importe quel serveur d'application, qui est adapté pour les tests et le débogage de mon application. Je suis à l'aide de la jetée également dans la production, donc il serait bien d'utiliser la jetée.
MODIFIER: (par peeskillet) - Code du lien
construire
apply plugin: 'java'
apply plugin: 'jetty'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
testCompile 'org.hamcrest:hamcrest-all:1.3'
testCompile 'com.sun.jersey:jersey-client:1.17.1'
testCompile 'com.sun.jersey:jersey-core:1.17.1'
compile 'com.sun.jersey:jersey-core:1.17.1'
compile 'com.sun.jersey:jersey-server:1.17.1'
compile 'com.sun.jersey:jersey-servlet:1.17.1'
}
test {
exclude '**/*IntegrationTest*'
}
task integrationTest(type: Test) {
include '**/*IntegrationTest*'
doFirst {
jettyRun.httpPort = 8080 //Port for test
jettyRun.daemon = true
jettyRun.execute()
}
doLast {
jettyStop.stopPort = 8091 //Port for stop signal
jettyStop.stopKey = 'stopKey'
jettyStop.execute()
}
}
Test
public class HelloIntegrationTest {
private static String HELLO_URL = "http://localhost:8080/hello";
@Test
public void testHello() throws Exception {
Client client = Client.create();
WebResource webResource = client.resource(HELLO_URL);
String response = webResource.get(String.class);
assertThat(response, is("Hello, World!"));
}
}
Ressources
@Path("/hello")
public class HelloWebapp {
private static HelloWorldService helloWorldService = new HelloWorldService();
@GET()
public String hello() {
return helloWorldService.sayHello();
}
}
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Jetty Gradle Hello World</display-name>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.ziroby.hello.webapp</param-value>
</init-param>
<!-- <init-param> -->
<!-- <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> -->
<!-- <param-value>true</param-value> -->
<!-- </init-param> -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Vous devez vous connecter pour publier un commentaire.
Première
Se débarrasser de tous les Maillot de dépendances que vous avez actuellement
Ci-dessous est la seulement seule dont vous avez besoin pour obtenir les fonctionnalités de base
Deuxième
web.xml
Troisième
Test
Cela a été testé avec un clone du projet lié. Seules les modifications sont affichées ci-dessus.
D'Autres Ressources:
Mise à jour
Pour la prise en charge de JSON utilisation
Aucune configuration supplémentaire n'est nécessaire pour qu'il fonctionne.