从现有的动态 Web 项目迁移到 gradle
Migrating from existing dynamic web project to gradle
我有一个现有的 java 动态 Web 项目,它是我使用 Eclipse 创建的。我通常只是通过 eclipse 创建一个 war 文件,然后将其部署到 tomcat.
现在我想使用 Gradle 构建我的项目并创建 war 文件。有没有 eclipse 插件可以做到这一点?如果没有,那么我如何在现有项目中使用 gradle?
我现有的项目结构是您通过 eclipse 创建动态 Web 项目时得到的,我不想更改它。
我已经尝试通过教程并使用 gradle 插件转换为 Gradle 项目。有人可以至少指出博客或教程或开始的方式吗?
MyProject
|java resources
|--src
|-- -- packages
|-- -- .properties files
|--test
|-- -- packages
|build
|-- classes
|WebContent
|-- MetaINF
|-- WEB-INF
|-- -- lib // all my libraries are here. there is no specific repo for now
|-- -- web.xml
我的 build.gradle :
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '2.0'
war {
baseName = 'Gradle'
version = '1.2'
}
repositories {
mavenCentral()
}
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
compile files('./lib/myjar.jar')
compile 'commons-codec:commons-codec:1.5'
compile 'commons-lang:commons-lang:2.6'
compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final'
compile 'org.apache.axis2:axis2-kernel:1.6.2'
compile 'org.apache.axis2:axis2-adb:1.6.2'
compile 'com.sun.jersey:jersey-server:1.19'
compile 'com.sun.jersey:jersey-client:1.19'
compile 'log4j:log4j:1.2.17'
compile 'org.apache.axis2:axis2-transport-local:1.6.2'
compile 'org.apache.axis2:axis2-transport-http:1.6.2'
providedCompile 'javax.servlet:servlet-api:2.3'
testCompile 'junit:junit:4.9'
testCompile 'org.jmock:jmock:2.6.0'
testCompile 'org.jmock:jmock-junit4:2.6.0'
testCompile 'org.jmock:jmock-legacy:2.6.0'
}
test {
systemProperties 'property': 'value'
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Gradle</display-name>
<servlet>
<servlet-name>HTTP REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
//in the above line It is showing a warning: servlet-class references to non-existent class "com.sun.jersey.spi.container.servlet.ServletContainer"
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.gradle</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HTTP REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我的项目结构
这是一个最小的 build.gradle
文件,可以让您开始。使用命令 gradle war
.
构建
apply plugin: 'war'
// See http://gradle.org/docs/current/userguide/war_plugin.html
// Section 26.5. Convention properties
webAppDirName = 'WebContent'
// See http://gradle.org/docs/current/userguide/java_plugin.html
// Section 23.4.1. Changing the project layout
sourceSets {
main {
// where does the Java source code live?
java {
srcDir 'Java Resources/src'
}
// where do classpath resources like *.properties files live?
resources {
srcDir 'Java Resources/src'
}
}
}
// See http://gradle.org/docs/current/userguide/dependency_management.html
// Section 51.4.4. File dependencies
dependencies {
// Where do the JARs live on the filesystem?
compile fileTree(dir: "${webAppDirName}/WEB-INF/lib", include: '*.jar')
}
我有一个现有的 java 动态 Web 项目,它是我使用 Eclipse 创建的。我通常只是通过 eclipse 创建一个 war 文件,然后将其部署到 tomcat.
现在我想使用 Gradle 构建我的项目并创建 war 文件。有没有 eclipse 插件可以做到这一点?如果没有,那么我如何在现有项目中使用 gradle? 我现有的项目结构是您通过 eclipse 创建动态 Web 项目时得到的,我不想更改它。
我已经尝试通过教程并使用 gradle 插件转换为 Gradle 项目。有人可以至少指出博客或教程或开始的方式吗?
MyProject
|java resources
|--src
|-- -- packages
|-- -- .properties files
|--test
|-- -- packages
|build
|-- classes
|WebContent
|-- MetaINF
|-- WEB-INF
|-- -- lib // all my libraries are here. there is no specific repo for now
|-- -- web.xml
我的 build.gradle :
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '2.0'
war {
baseName = 'Gradle'
version = '1.2'
}
repositories {
mavenCentral()
}
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
compile files('./lib/myjar.jar')
compile 'commons-codec:commons-codec:1.5'
compile 'commons-lang:commons-lang:2.6'
compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final'
compile 'org.apache.axis2:axis2-kernel:1.6.2'
compile 'org.apache.axis2:axis2-adb:1.6.2'
compile 'com.sun.jersey:jersey-server:1.19'
compile 'com.sun.jersey:jersey-client:1.19'
compile 'log4j:log4j:1.2.17'
compile 'org.apache.axis2:axis2-transport-local:1.6.2'
compile 'org.apache.axis2:axis2-transport-http:1.6.2'
providedCompile 'javax.servlet:servlet-api:2.3'
testCompile 'junit:junit:4.9'
testCompile 'org.jmock:jmock:2.6.0'
testCompile 'org.jmock:jmock-junit4:2.6.0'
testCompile 'org.jmock:jmock-legacy:2.6.0'
}
test {
systemProperties 'property': 'value'
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Gradle</display-name>
<servlet>
<servlet-name>HTTP REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
//in the above line It is showing a warning: servlet-class references to non-existent class "com.sun.jersey.spi.container.servlet.ServletContainer"
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.gradle</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HTTP REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我的项目结构
这是一个最小的 build.gradle
文件,可以让您开始。使用命令 gradle war
.
apply plugin: 'war'
// See http://gradle.org/docs/current/userguide/war_plugin.html
// Section 26.5. Convention properties
webAppDirName = 'WebContent'
// See http://gradle.org/docs/current/userguide/java_plugin.html
// Section 23.4.1. Changing the project layout
sourceSets {
main {
// where does the Java source code live?
java {
srcDir 'Java Resources/src'
}
// where do classpath resources like *.properties files live?
resources {
srcDir 'Java Resources/src'
}
}
}
// See http://gradle.org/docs/current/userguide/dependency_management.html
// Section 51.4.4. File dependencies
dependencies {
// Where do the JARs live on the filesystem?
compile fileTree(dir: "${webAppDirName}/WEB-INF/lib", include: '*.jar')
}