Gradle 1.6 Linux.Gradle PMD Checkstyle Findbugs - Który katalog źródłowy do pracy Java build
Java struktura Build Project
- Project_or_Module
- src/java (zawiera kod źródłowy Java)
- test/java (zawiera testy JUnit - testy jednostkowe)
- src/java- test (zawiera testy integracji)
- etc/etc (inne foldery w ramach projektu)
Mam następujący plik konfiguracyjny/build.gradle:
apply plugin: 'java'
apply plugin: 'pmd'
apply plugin: 'findbugs'
apply plugin: 'checkstyle'
apply plugin: 'code-quality'
apply plugin: 'jacoco'
tasks.withType(Compile) {
options.debug = true
options.compilerArgs = ["-g"]
}
checkstyle {
configFile = new File(rootDir, "config/checkstyle.xml")
ignoreFailures = true
}
findbugs {
ignoreFailures = true
}
pmd {
ruleSets = ["basic", "braces", "design"]
ignoreFailures = true
}
jacoco {
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/customJacocoReportDir")
}
sourceSets {
main {
java {
srcDir 'src/java'
}
}
test {
java {
srcDir 'test/java'
}
}
integrationTest {
java {
srcDir 'src/java-test'
}
}
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
jacocoTestReport {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml{
enabled true
destination "${buildDir}/reports/jacoco/jacoco.xml"
}
csv.enabled false
html{
enabled true
destination "${buildDir}/jacocoHtml"
}
}
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
na kilka projektów, wszystko działa bez zarzutu. tj. Po uruchomieniu "gradle clean build" lub "gradle clean build jacocoTestReport" wszystko się powiedzie.
Dla kilku innych projektów, widzę następujące problemy i potrzebuję pomocy.
1) "gradle clean build" polecenie działa, gdy usuwam/komentuję poniższe wiersze dla projektu. Ale gdy te linie są odkomentowane tak jak w powyższej migawce kodu, widzę błędy. Błędy są wymienione poniżej po migawce kodu.
apply plugin: 'java'
// apply plugin: 'pmd'
// apply plugin: 'findbugs'
// apply plugin: 'checkstyle'
// apply plugin: 'code-quality'
apply plugin: 'jacoco'
tasks.withType(Compile) {
options.debug = true
options.compilerArgs = ["-g"]
}
// checkstyle {
// configFile = new File(rootDir, "config/checkstyle.xml")
// ignoreFailures = true
// }
// findbugs {
// ignoreFailures = true
// }
// pmd {
// ruleSets = ["basic", "braces", "design"]
// ignoreFailures = true
// }
//
jacoco {
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/customJacocoReportDir")
}
sourceSets {
main {
java {
srcDir 'src/java'
}
}
test {
java {
srcDir 'test/java'
}
}
integrationTest {
java {
srcDir 'src/java-test'
}
}
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
jacocoTestReport {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml{
enabled true
destination "${buildDir}/reports/jacoco/jacoco.xml"
}
csv.enabled false
html{
enabled true
destination "${buildDir}/jacocoHtml"
}
}
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
Błędy: A. Zadanie nie powiodło się. Wyjście pokazuje, co następuje.
..
....
:compileIntegrationTestJava
/production/jenkinsAKS/jobs/Project_or_Module/workspace/src/java-test/com/tr/ids/application/project_or_module/Project_or_ModuleTestCase.java:11:
package org.apache.cactus does not exist import
org.apache.cactus.ServletTestCase;
^/production/jenkinsAKS/jobs/Project_or_Module/workspace/src/java-test/com/tr/ids/application/project_or_module/Project_or_ModuleTestCase.java:13:
> cannot find symbol symbol: class ServletTestCase public class
> Project_or_ModuleTestCase extends ServletTestCase
>
...
....
.....
some more errors
...
...
100 errors (similar errors).
Zauważysz tutaj jest to, że kiedy nadchodzi błąd Gradle dzwoni powyższe zadanie dla folderu „src/java-test”.
** Moje pytanie1 **: Z tymi liniami skomentowanymi w pliku build.gradle, nigdy nie widzę tych błędów i zadania "wyczyść kompilację jacocoTestReport" kończą się pomyślnie, ale kiedy kod dla pmd/findbugs/checkstyle jest włączony, zobacz te błędy. Dlaczego kompiluje kod testowy java. Myślałem, że kod źródłowy jest tylko pod src/java (rzeczywisty kod źródłowy java dla projektu: project_or_module)
B. Jeden z innych projektów ProjectAUtilities nie działa na etapie PMD, mimo że błąd ignorowania jest prawdziwy w build.gradle dla pmd . Błąd mówi, że 3 testy nie powiodły się.
dziennika błędu:
20:06:20 :pmdIntegrationTest UP-TO-DATE
20:06:21 :pmdMain
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/pmd/pmd/4.3/pmd-4.3.pom
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm/3.2/asm-3.2.pom
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm-parent/3.2/asm-parent-3.2.pom
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/junit/junit/4.4/junit-4.4.pom
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/xml-apis/xml-apis/1.3.02/xml-apis-1.3.02.pom
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/pmd/pmd/4.3/pmd-4.3.jar
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/asm/asm/3.2/asm-3.2.jar
20:06:21 Download http://devserver2:8081/artifactory/jcenter-cache/junit/junit/4.4/junit-4.4.jar
20:06:24 251 PMD rule violations were found. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/pmd/main.html
20:06:26 :pmdTest
20:06:26 16 PMD rule violations were found. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/pmd/test.html
20:06:26 :test
20:06:26 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002.pom
20:06:26 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.build/0.6.2.201302030002/org.jacoco.build-0.6.2.201302030002.pom
20:06:27 Download http://devserver2:8081/artifactory/jcenter-cache/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002.jar
20:06:29 Xlib: connection to "localhost:13.0" refused by server
20:06:29 Xlib: PuTTY X11 proxy: wrong authorisation protocol attempted
20:06:29
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > getPieChart FAILED
20:06:29 java.lang.InternalError at TestChartUtilities.java:89
20:06:29
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > getLegend FAILED
20:06:29 java.lang.NoClassDefFoundError at TestChartUtilities.java:103
20:06:29
20:06:29 com.tr.ids.util.test.chart.TestChartUtilities > useString FAILED
20:06:29 java.lang.NoClassDefFoundError at TestChartUtilities.java:143
20:06:29
20:06:29 140 tests completed, 3 failed
20:06:29 :test FAILED
20:06:29
20:06:29 FAILURE: Build failed with an exception.
20:06:29
20:06:29 * What went wrong:
20:06:29 Execution failed for task ':test'.
20:06:29 > There were failing tests. See the report at: file:///production/jenkinsAKS/jobs/ProjectAUtilities/workspace/build/reports/tests/index.html
20:06:29
20:06:29 * Try:
20:06:29 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
20:06:29
20:06:29 BUILD FAILED
Moja question2: Co konfiguracji należy ustawić na odcinku PMD w build.gradle że będą ignorować testy, jeśli nie. Myślę, że już mam, tj. ignoreFailures = true
C. Jak używać include/exclude dla Checkstyle/PMD/Findbugs w pliku build.gradle (nie ANT). Oznacza to, że nie pójdzie i nie zrobi niczego poza folderem "src/java".
Dzięki.
Powyższy kod właśnie zrobił checkstyle/findbugs/pmd - sprawdź tylko src/java (który jest moim sourceSets.main). poza tym, błąd dla mojego pytania 1, został rozwiązany po tym, jak zawarłem/wspomniałem zależną nazwę słoika w pliku build.gradle (na poziomie projektu/modułu). Drugi błąd lub pytanie dotyczące wtyczki Xvfb zostało rozwiązane przez usunięcie wtyczki Xvfb w Jenkins, ponowne uruchomienie Jnkinsa i na koniec wyczyszczenie obszaru roboczego, tj. Usunięcie całego inder Jenkinsa, instancji/jobs//workspace/.... level –