gradle 要替代 maven 么
发布网友
发布时间:2022-04-24 23:26
我来回答
共1个回答
热心网友
时间:2022-05-17 23:58
usercenter包含两个工程,app是web工程,common是公共模块,但是app的main目录下除了java、resources、webapp之外又多了一个native2ascii的资源目录,严格来说这不符合maven约定,不过没关系,gradle除了支持maven的约定外还允许自定义java或者resources目录
下面是gradle主配置文件(删除了大部分无关紧要的依赖,能说明问题即可)
<!-- lang: groovy -->
// gradle插件
buildscript {
repositories {
jcenter { url "/" }
}
dependencies {
// 远程布署插件
classpath 'org.hidetake:gradle-ssh-plugin:1.0.1'
// web容器,支持jetty和tomcat
classpath 'org.akhikhl.gretty:gretty:1.2.0'
}
}
// 全局配置,对所有工程有效
allprojects {
apply plugin: "java"
apply plugin: "idea"
apply plugin: "eclipse"
apply plugin: "maven"
group = "com.test"
version = "1.0"
// 全局属性设置
ext {
junitVersion = "4.11"
springVersion = "3.0.5.RELEASE"
// java文件编码方式设置为utf-8
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'
}
}
// 所有子工程共有的配置
subprojects {
// 配置多个maven源
repositories {
mavenLocal()
mavenCentral()
maven { url "/pub/mirrors/maven2" }
}
// 默认情况下gradle会选用版本最高的那个依赖,有时候会带来问题
configurations.all {
// 有版本冲突的时候强制使用指定的版本,对于相关依赖也同样有效
resolutionStrategy.force(
"org.springframework:spring-core:${springVersion}",
)
}
// 公共依赖配置
dependencies {
compile(
"org.springframework:spring-core:${springVersion}",
)
testCompile(
"junit:junit:${junitVersion}",
)
}
}
// app工程配置
project(':app'){
apply plugin: 'war'
apply from: 'gretty'
// 使用gretty插件运行web工程
gretty {
httpPort = 8080
debugPort = httpPort + 1
servicePort = httpPort + 2
statusPort = httpPort + 3
httpsPort = httpPort + 4
httpsEnabled = true
contextPath = '/'
jvmArgs = ['-Xmx1024M', '-XX:PermSize=128M', '-XX:MaxPermSize=256M']
servletContainer = 'jetty7'
scanInterval = 0
inplaceMode = 'hard'
debugSuspend = false
}
// 自定义resource文件夹
sourceSets {
main {
resources.srcDirs = ['src/main/resources', 'src/main/native2ascii']
}
}
dependencies {
compile(
// 依赖common工程
project(":common"),
"javax.servlet.jsp:jsp-api:2.1",
"javax.servlet:servlet-api:2.5",
)
}
}
// common工程配置
project(':common'){
// 设置resource文件目录,引入java文件夹下的xml文件
sourceSets {
main {
resources.srcDirs = ['src/main/resources', 'src/main/java']
resources.includes = ['src/main/java/**.xml']
}
}
dependencies {
compile(
"org.mongodb:mongo-java-driver:2.10.1",
fileTree(dir: 'lib' , include: '*.jar' )
)
}
}
settings.gradle中记录子工程,内容只有一行
include 'app','common'
可以把gradle配置写到多个文件夹下,每个子工程都下都新建一个build.gradle,如果工程比较简单,也可以像上面样,所有子工程的配置都写到主工程的build.gradle中
运行的时候只需要在主工程的目录下执行一个命令即可