2012. 7. 18. 09:09 IT

배경 : gradle의 pmd plugin은 rule파일을 제대로 인식하지 못하고, csv 형태의 report파일 생성을 지원하지 않음.


해결책 : ant pmd task를 호출.


// apply plugin: 'pmd'


configurations {

    pmd // for code inspection

}

dependencies {

    pmd group:'pmd', name:'pmd', version:'4.2.5'  

}


task pmd << {

def ruleFilePath =  "..... /pmd-rule.xml";

ant.mkdir(dir:project.reporting.baseDir)

def reportFile = project.reporting.baseDir.toString() + "/pmd_" + new Date().format("yyyy-MM-dd") +".csv"

def excludesFiles = "*/test/**,*/sample/**,**/*Test*.java";

def includeDir = "*/src/**";

def checkDir = "../..";


ant.taskdef(name: 'pmd', classpath:configurations.pmd.asPath, 
             classname:"net.sourceforge.pmd.ant.PMDTask" );

ant.pmd( rulesetfiles: ruleFilePath,
failonerror: false,
maxRuleViolations: 9999,
shortFilenames: true){
formatter(type: 'csv', toFile:  reportFile)
fileset(dir: checkDir, includes: includeDir, excludes: excludesFiles)
};
}

기타 : 각각 프로젝트별로 pmd report를 만들고 병합하려고 했지만... 귀찮아서 통으로 돌리고 skip. 

posted by smplnote
2012. 4. 12. 09:14 IT

[WHY] 

eclipse에서 grails plugin을 설치하지 않고도  ant  view에서 편리하게 각각의 gradle 명령을 사용하고 싶었음.


참고한 reference를 보면 gradle이 설치되어 있고 GRADLE_HOME 환경변수가 설정된 상태를 전제로 한다.


앞글에서 설명했던 gradlew 를 이용하면 미리 gradle binary들 설치하고 환경변수를 설정하지 않고도 빌드실행이 가능해진다. 




[Prerequisite]

== gradle wrapper생성을 통해 만들어진 파일들 (3)

gradlew.bat or gradlew

gradle/wrapper/gradle-wrapper.jar

gradle/wrapper/gradle-wrapper.properties


== 실제 build를 수행할 build 파일

build.gradle

// this is sample...

apply plugin: 'java'

repositories {

mavenCentral()

}

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

jar {

destinationDir = file("dist")

}


== gradle을 수행할 ant build wrapper 

build.xml

<project name="build-gradle"  default="help"  basedir=".">

<property environment="env" />

<property name="gradle.executable" location="./gradlew.bat" /><!-- for window -->

<target name="help">

<exec executable="${gradle.executable}" dir=".">

<arg value="tasks" />

</exec>

</target>

<target name="build"> <!-- 모든 포함된 project의 build task를 실행 -->

<exec executable="${gradle.executable}" dir=".">

<arg value="build" />

</exec>

</target>

<!--

<target name="subproject-build" description=" 특정 subproject의 build task만 실행시키고 싶을때 사용">

<exec executable="${gradle.executable}" dir=".">

<arg value=":common:build" />

</exec>

</target>

-->

</project>

이제, 필요할 때마다 ant target을 추가하면된다. 



reference : https://gist.github.com/735788 

posted by smplnote