當前位置:編程學習大全網 - 源碼下載 - gradle配置不成功,求助貼

gradle配置不成功,求助貼

近項目遇蠻煩問題Maven約定標準Java項目代碼結構:

project

--src

--main

--java

--resources

--test

--java

--resources

‘gradle idea’構建intelliJ項目文件自幫忙設置所Source RootTest Source Root我工作部門我希望測試unitintg2類別更加容易區測試目同提供Build Pipeline別運行同類別測試能力我部門內標準Java項目結構:

project

--src

--main

--java

--resources

--test

--common

--java

--unit

--java

--resources

--intg

--java

--resources

目錄結構我剩2問題要解決:

1. 何區運行IntegrationTestUnit Test

2. 何保證‘gradle idea’需重新設置Test Source Rootgradle具備識別新代碼結構能力

何寫Gradle Plugin

語言:

JavaGroovyScala都推薦用Groovy,畢竟Gradle本質說用Groovy寫DSL使用Groovy更致點

註入式:

Gradle支持3種形式定制Plugin註入:

1. 直接Plugin源代碼直接寫Build Script面

2. Pluigin源代碼寫rootProjectDir/buildSrc/src/main/groovy目錄

3. 用單獨project寫Plugin源代碼jar依賴形式註入項目

覺都想要自寫Plugin定項目公用Plugin否則直接Plugin代碼直接寫腳本要定制Plugin我看定需要單獨jar形式註入

寫project-structure Plugin:

Gradle寫Plugin非簡單首先添加項目依賴我使用Groovy寫插件所添加localGroovy依賴

Gradle代碼

apply plugin: 'groovy'

dependencies {

compile gradleApi()

compile localGroovy()

}

寫Plugin實現代碼實現代碼需要實現Plugin接口即我實現代碼做兩件事定制項目代碼結構二添加integrationTest Task該Task運行*IntegrationTest.class, Build Pipeline階段運行Unit TestIntegrationTest

Groovy代碼

import org.gradle.api.Plugin

import org.gradle.api.Project

import org.gradle.api.tasks.testing.Test

class ProjectStructurePlugin implements Plugin {

@Override

void apply(Project project) {

project.logger.info "Configuring Project Structure for $project.name"

project.configurations {

integrationTestCompile { extendsFrom testCompile }

integrationTestRuntime { extendsFrom integrationTestCompile, testRuntime }

}

configureSourceSets(project)

addIntegrationTestTask(project)

}

private void addIntegrationTestTask(Project project) {

Test intgTest = project.getTasks().create("integrationTest", Test.class);

intgTest.testClassesDir = project.sourceSets.integrationTest.output.classesDir

intgTest.includes = ["**/*IntegrationTest.class"]

intgTest.inputs.dir 'src'

intgTest.outputs.dir project.sourceSets.integrationTest.output.classesDir

project.check.dependsOn project.integrationTest

intgTest.dependsOn project.test

}

private void configureSourceSets(Project project) {

project.sourceSets {

test {

java {

srcDir 'src/test/unit/java'

srcDir 'src/test/common/java'

}

resources {

srcDir 'src/test/unit/resources'

}

}

integrationTest {

java {

srcDir 'src/test/intg/java'

srcDir 'src/test/common/java'

}

resources {

srcDir 'src/test/intg/resources'

}

compileClasspath = project.sourceSets.main.output + project.sourceSets.test.output + project.configurations.integrationTestCompile

runtimeClasspath = output + compileClasspath + project.configurations.integrationTestRuntime

}

}

}

}

接著項目src/main/resources/META-INF/gradle-plugins目錄創建文件:.properties,該文件指定Plugin實現類:

Java代碼

implementation-class=com.xianlinbox.plugins.ProjectStructurePlugin

項目使用該Plugin

首先需要build.gradle腳本引入該Pluginjar包依賴文件形式更推薦jar包發布Maven庫Maven依賴形式註入本例使用本文件依賴:

Groovy代碼

buildscript {

dependencies {

classpath fileTree(dir: 'libs', include: '*.jar')

}

}

註入編寫插件註意該插件必須java plugin起使用其使用SourceSets屬性該插件引入進:

Groovy代碼

apply plugin: 'java'

apply plugin: 'project-structure'

插件通‘gradle test’‘gradle integrationtTest’區別運行UnitTestIntrgrationTest

解決自設置Test Source Root問題需要build.gradleideaModule Task增加識別Test Source Root能力即:

Groovy代碼

apply plugin: 'idea'

...

idea {

module {

testSourceDirs += file('src/test/intg/java')

testSourceDirs += file('src/test/intg/resources')

}

}

我寫Plugin設置Project-Structrue:

Groovy代碼

......

compileClasspath = project.sourceSets.main.output + project.sourceSets.test.output + project.configurations.integrationTestCompile

runtimeClasspath = output + compileClasspath + project.configurations.integrationTestRuntime

project.idea {

module {

testSourceDirs = testSourceDirs + new File('src/test/intg/java') + new File('src/test/intg/resources')

}

}

1、安裝

Gradle安裝Maven便需要載( )==》解壓==》配置環境變量(GRADLE_HOME & PATH)配置環境變量記使用 source命令使新環境變量效配置功命令行通 gradle -v"驗證否安裝功

2、Gradle編譯Maven風格java項目

首先項目根目錄創建"build.gradle"文件編譯java項目需要使用gradlejava插件

Groovy代碼

apply plugin: 'java'

,要集maven功能需要添加maven插件

Groovy代碼

apply plugin: 'maven'[

接著配置項目Repository風格

Groovy代碼

repositories{

mavenCentral();

}

面例使用默認maven央庫想用自本庫通式配置

Groovy代碼

def localMavenRepo = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

repositories {

// Use local Maven repo location. We don't need this if we only want to install

// an artifact, but we do need it if we want to use dependencies from the local

// repository.

mavenRepo urls: localMavenRepo

mavenCentral()

}

再配置項目依賴第三庫配置模板:

Groovy代碼

dependencies{

compile group: '',name:'',version:''

}

舉例假設項目依賴4.10版本junit配置

Groovy代碼

compile group: 'junit',name:'junit',version:'4.10'

另外Depencies按式簡寫

Groovy代碼

compile '::'

Groovy代碼

compile 'junit:junit:4.10'

何自項目發布Repository

Groovy代碼

uploadArchives {

repositories {

mavenDeployer {

repository(url: "file://localhost/tmp/myRepo/")

}

}

  • 上一篇:開發中說的封版本是什麽意思?怎麽封版本?
  • 下一篇:python為什麽效率低
  • copyright 2024編程學習大全網