Gradle为应用开发提供了两个相关的插件:war plugin以及jetty plugin
war plugin继承了java plugin为你的工程构建war包,jetty pugin继承了war plugin可以让的工程构建在嵌入式容器jetty中
构建War文件
首先在你的build.gradle中添加如下一行
apply plugin: 'war'
由于war plugin继承了java plugin,所有java plugin也会被默认的加入配置文件中
运行
gradle build命令可以为你工程进行编译,测试以及打war包,Gradle会将你在工程src/main/webapp下的资源文件也一并打入war包中,你的编译代码和他们运行时的依赖同样会被打入jar包中
运行web工程
首先在你的build.gradle中添加如下一行
apply plugin: 'jetty'
由于jetty plugin继承了war plugin,所有war plugin也会被默认的加入配置文件中
运行
gradle jettyRun命令,你的web工程就会在Jetty容器中被运行,运行
gradle jettyRunWar命令会构建war包,然后将构建好的war在jetty容器中运行
在配置文件中加入下列命令可以设置Jetty的属性
httpPort = 8080 //http访问端口 默认8080
stopPort = 9451 //jetty监听来自admin请求的端口 默认无
stopKey = 'foo' //停止jetty服务器默认键 默认无
War Plugin
War Plugin在继承Java plugin的继承上增加了打war文件的支持,它会将Java Plugin中的默认构建JAR文件的功能替换为为构建WAR文件。
相比于Java Plugin,War Plugin增加了如下一个Task
可以看到首先gradle回去处理对应的资源,然后对工程代码进行编译,最后进行打war包的操作,命令执行成功之后我们可以看见在build.gradle的同级目录下会出现一个名为build的文件夹
点进去之后可以发现如下的目录结构
classes文件夹下存放的是编译后的字节码文件,在libs目录下存放的就是打出的war包了,在resources目录下存放的是工程的资源文件。
假如你需要将你工程一些信息进行归档那么你可以使用
gradle assemble命令,task assemble是依赖于task war的。
如果你需要定制化打包信息,比如你的工程的classpath与gradle默认的不同那么你可以重写war task:
war { from 'src/rootContent' // adds a file-set to the root of the archive default src/main/webapp webInf { from 'src/additionalWebInf'} // adds a file-set to the WEB-INF dir. classpath fileTree( 'additionalLibs') // adds a file-set to the WEB-INF/lib dir webXml = file( 'src/someWeb.xml')// copies a file to WEB-INF/web.xml }