概述
基于以前自己都是直接用Intellij IDEA构建单个Gradle项目,但是在在实际中往往是一个Gradle项目中包含了几个子gradle项目,由于使用Intellij并没有直接构造一个gradle项目包含多个子项目的方法,但我们又想使用Intel lij进行程序编写。最好的办法就是先手动构造好Gradle多项目,再使用Intellij 进行导入。
具体操作如下:
1 新建一个文件夹multi-project-build用来存放gradle总项目,并在gradle总项目下建core和app分别存放两个子项目。总的目录结构如图1所示。
图1 gradle总项目结构
2 配置总项目的settings.gradle和build.gradle
1)项目的根目录下创建settings.gradle
文件,一个多项目Gradle构建必须含有这个文件,因为它指明了那些包含在多项目构建中的项目。
2)确保app和core项目包含在我们的多项目构建中。
3)settings.gradle内容如下:
include 'app'
include 'core'
4)build.gradle的内容如下:
subprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
3 配置core项目
图2 core子项目
其中build.gradle的内容如下:
dependencies {
compile "ch.qos.logback:logback-classic:1.1.7"
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile group: 'org.testng', name: 'testng', version: '6.9.9'
}
在src下创建main/java/com/keyda目录,并在core和log目录下分别创建MessageService.java、LogUtil.java两个java文件,为App下的HelloWorld.java提供所需的服务。
图3 core项目的Log包
图4 core项目的服务包
MessageService.java的内容为:
package com.keydak.core;
/**
* @author huangzhichang
*/
public class MessageService {
public String getMessage() {
return "Hello World!";
}
}
4 配置app项目,app项目目录结构和core项目目录结构一致,其build.gradle的内容为:
apply plugin: 'application'
dependencies {
compile 'log4j:log4j:1.2.17'
compile project(':core')
}
mainClassName = 'com.keydak.main.HelloWorld'
task copyLicense {
outputs.file new File("$buildDir/LICENSE")
doLast {
copy {
from "LICENSE"
into "$buildDir"
}
}
}
applicationDistribution.from(copyLicense) {
into ""
}
src目录下创建java和resources文件夹,java文件夹下创建package:com.keydak.main,class:HelloWorld.java:
package com.keydak.main;
import com.keydak.core.MessageService;
import org.slf4j.LoggerFactory;
/**
* @author HuangZhichang
*/
public class HelloWorld {
public static void main(String[] args) {
MessageService messageService = new MessageService();
String message = messageService.getMessage();
LoggerFactory.getLogger(HelloWorld.class).debug("Received message: " + message);
}
}
resources文件夹下有logback.xml文件,其内容为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="false" scanPeriod="30 seconds">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{yyyy/MM/dd-HH:mm:ss} %level [%thread] %highlight(%caller{2}) - %msg%n</pattern>
</encoder>
</appender>
<!-- 按日期区分的滚动日志 -->
<appender name="APP" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/core.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>core.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<!-- 按日期和大小区分的滚动日志 -->
<appender name="DEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/core.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>core-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="trace">
<appender-ref ref="STDOUT" />
<appender-ref ref="APP" />
<appender-ref ref="DEBUG-OUT" />
</root>
</configuration>
5 配置好两个项目后,在cmd下切换到gradle-multi-project总项目目录,使用gradle进行编译运行
gradle build clean
gradle run
运行效果图
图5 gradle clean build 运行效果图
图6 gradle run运行效果图
6导入Intellij中进行代码开发
1)选择 file ->open 选择gradle-multi-project目录,回车确定即可
2)选择Run -> Run 'HelloWorld'运行即可。
项目的git网址为:https://github.com/Meihai/gradle-multi-project
参考网址:1. https://github.com/pkainulainen/gradle-examples/tree/master/multi-project-build
2. http://blog.jobbole.com/84471/
最后
以上就是顺利乌龟为你收集整理的Gradle多项目构建的全部内容,希望文章能够帮你解决Gradle多项目构建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复