我正在評估用於替換ant構建腳本的gradle,並且我無法找到解決方案來創建正確管理的標準構建腳本dev/prod環境。如何使用dev/prod配置覆蓋gradle版本
- 與標準任務的共同腳本(編譯,構建-JAR,打造戰)
- :
比ant腳本(它是一個Java項目,而不是機器人)這樣的結構一個特定的項目腳本,其中包括第一個和通過一些屬性它定義戰爭任務應該選擇正確的文件
我們的項目結構/ taks允許覆蓋最終戰爭中的整個目錄。讓我們考慮這個例子: 的開發配置是標準之一,規定的int DIR web內容 有多個督促配置(每個具體安裝的一個,我們沒有更多的10個不同的督促CONFIGS)下的所有督促目錄(即* PROD/CONF1 * M 督促/ CONF2等)
Ant構建具有dev_build任務爲prod_conf1_build之一,prod_conf2_build一個等 的XXX_build任務做同樣的事情:
- 特殊規格Ÿ包含ENV目錄的父(這是一個項目的屬性)目錄/文件
- 調用相同螞蟻TAKS是建立使用調用任務
我試圖做的指定屬性的戰爭在gradle中也是如此,但它似乎甚至從另一個調用taks會產生一些問題(即任務始終是最新的)
這是腳本(這是一個工作草稿,我學習gradle)試圖做同樣的事情,但它不工作,當我打電話給war_prod時taks什麼都不做,因爲它報告了到目前爲止
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse'
project.ext.envdir = ""
eclipse {
jdt {
sourceCompatibility = 1.8
targetCompatibility = 1.8
javaRuntimeName = "jdk-1.8.x"
}
}
// In this section you declare where to find the dependencies of your project
repositories {
maven {
url 'http://artifactory.zzzz.priv/artifactory/libs-release'
url 'http://artifactory.zzzz.priv/artifactory/libs-snapshot'
credentials {
username 'xxxx'
password 'yyyy'
}
}
}
// In this section you declare the dependencies for your production and test code
dependencies {
// The production code uses the SLF4J logging API at compile time
compile 'org.slf4j:slf4j-api:1.7.18'
// Declare the dependency for your favourite test framework you want to use in your tests.
// TestNG is also supported by the Gradle Test task. Just change the
// testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
// 'test.useTestNG()' to your build script.
testCompile 'junit:junit:4.12'
}
task war_prod {
project.ext.envdir='prod/conf1'
project.ext.envdir=project.ext.envdir.replaceAll('\\\\',File.pathSeparator)
project.ext.envdir=project.ext.envdir.replaceAll('/',File.pathSeparator)
tasks.war.execute()
}
war {
eachFile {
println 'endir' + project.ext.envdir
println 'evaluating' + it
FileTree tree = fileTree(dir: project.ext.envdir)
tree.visit { FileVisitDetails file->
if (!file.file.isDirectory()) {
println '\tFileVisitDetails relpath ' + file.relativePath
println '\tsourcepath ' + it.file.getAbsolutePath()
println '\tcontains ' + it.file.getAbsolutePath().contains(project.ext.envdir)
if (it.relativePath == file.relativePath && !it.file.getAbsolutePath().contains(project.ext.envdir)) {
it.exclude()
println '\texcluding ' + it
} else {
if (it!=null) {
//println '\tincluding ' + it
}
}
}
}
}
from 'prod/conf1'
}
任何人都可以指向正確的方向創建一個正確的gradle腳本? 有沒有一種特定的gradle方法來構建帶有prod/dev配置的war文件(其中配置由一些dir和文件表示)?
謝謝你,從你的樣本開始,我已經能夠繼續我的測試 – Giovanni