diff options
207 files changed, 2804 insertions, 7202 deletions
diff --git a/.gitignore b/.gitignore index fadc2446785..80ca88f2fc1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,14 +7,13 @@ server/sonar-web/src/main/webapp/WEB-INF/log/ server/sonar-web/src/main/webapp/deploy/*.jar server/sonar-web/src/main/webapp/deploy/jdbc-driver.txt +# ---- Gradle +build/ +.gradle/ # ---- Javadoc docs.tar -# ---- Maven -target/ -dependency-reduced-pom.xml - # ---- IntelliJ IDEA *.iws *.iml diff --git a/.travis.yml b/.travis.yml index 960ab66f8d7..1b1eb237819 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,17 +14,16 @@ matrix: cache: directories: - - $HOME/.m2/repository - $HOME/.sonar - - server/sonar-web/node - - server/sonar-web/node_modules - $HOME/jvm - - $HOME/maven + - $HOME/.gradle/caches/ + - $HOME/.gradle/wrapper/ before_cache: - # remove all the artifacts (JAR, ZIP) that are installed in local repo because of mvn deploy - - rm -rf $HOME/.m2/repository/org/sonarsource/sonarqube - - find $HOME/.m2 -name resolver-status.properties -exec rm {} \; + - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock + - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ + - rm -fr $HOME/.gradle/caches/*/fileHashes/ + - rm -fr $HOME/.gradle/caches/*/scripts/ notifications: email: false diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000000..4ba10851def --- /dev/null +++ b/build.gradle @@ -0,0 +1,296 @@ +buildscript { + repositories { + maven { + url 'https://plugins.gradle.org/m2/' + } + } + dependencies { + // check updates with https://plugins.gradle.org/ + // Ordered alphabeticly to avoid duplication + classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' + classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.4' + classpath 'com.moowork.gradle:gradle-node-plugin:1.2.0' + classpath 'io.spring.gradle:dependency-management-plugin:1.0.4.RELEASE' + classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.6.2' + classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2' + } +} + +// Analyze SonarQube with SonarQube! +apply plugin: 'org.sonarqube' +sonarqube { + properties { + property 'sonar.projectName', projectTitle + } +} + +allprojects { + apply plugin: 'com.jfrog.artifactory' + apply plugin: 'maven-publish' + + // Replaces the version defined in sources, usually x.y-SNAPSHOT, by a version identifying the build. + def buildNumber = System.getProperty("buildNumber") + if (version.endsWith('-SNAPSHOT') && buildNumber != null) { + version = version.replace('-SNAPSHOT', ".0.$buildNumber") + } + + ext { + release = project.hasProperty('release') && project.getProperty('release') + } + + repositories { + def repository = project.hasProperty('cix') ? 'sonarsource-qa' : 'sonarsource' + maven { + url "https://repox.sonarsource.com/${repository}" + def artifactoryUsername = System.env.'ARTIFACTORY_PRIVATE_USERNAME' + def artifactoryPassword = System.env.'ARTIFACTORY_PRIVATE_PASSWORD' + if (artifactoryUsername && artifactoryPassword) { + credentials { + username artifactoryUsername + password artifactoryPassword + } + } + } + } +} + +subprojects { + apply plugin: 'io.spring.dependency-management' + apply plugin: 'java' + // protobuf must be applied after java + apply plugin: 'com.google.protobuf' + apply plugin: "jacoco" + apply plugin: 'idea' + + // do not deploy to Artifactory by default + artifactoryPublish.skip = true + + ext { + elasticsearchVersion = '5.6.3' + protobufVersion = '3.5.1' + } + + sonarqube { + properties { + property 'sonar.moduleKey', project.group + ':' + project.name + } + } + + // Central place for definition dependency versions and exclusions. + dependencyManagement { + dependencies { + // please keep this list alphabetically ordered + dependencySet(group: 'ch.qos.logback', version: '1.2.3') { + entry 'logback-access' + entry 'logback-classic' + entry 'logback-core' + } + dependency('commons-beanutils:commons-beanutils:1.8.3') { + exclude 'commons-logging:commons-logging' + } + dependency 'commons-codec:commons-codec:1.8' + dependency 'commons-dbcp:commons-dbcp:1.4' + dependency 'commons-dbutils:commons-dbutils:1.5' + dependency 'commons-io:commons-io:2.4' + dependency 'commons-lang:commons-lang:2.6' + dependencySet(group: 'com.fasterxml.jackson.core', version: '2.6.6') { + entry 'jackson-core' + entry 'jackson-databind' + entry 'jackson-annotations' + } + dependency 'com.github.kevinsawicki:http-request:5.4.1' + dependency 'com.github.tlrx:elasticsearch-test:1.2.1' + dependency 'com.googlecode.java-diff-utils:diffutils:1.2' + dependency('com.googlecode.json-simple:json-simple:1.1.1') { + exclude 'junit:junit' + } + dependency 'com.google.code.findbugs:jsr305:3.0.2' + dependency 'com.google.code.gson:gson:2.3.1' + dependency 'com.google.guava:guava:18.0' + dependency "com.google.protobuf:protobuf-java:${protobufVersion}" + dependency 'com.h2database:h2:1.3.176' + dependencySet(group: 'com.hazelcast', version: '3.8.6') { + entry 'hazelcast' + entry 'hazelcast-client' + } + dependency 'com.ibm.icu:icu4j:3.4.4' + dependency 'com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8' + dependency 'com.oracle.jdbc:ojdbc8:12.2.0.1.0' + dependencySet(group: 'com.squareup.okhttp3', version: '3.7.0') { + entry 'okhttp' + entry 'mockwebserver' + } + dependency 'com.tngtech.java:junit-dataprovider:1.9.2' + dependency 'io.jsonwebtoken:jjwt:0.9.0' + dependency 'javax.servlet:javax.servlet-api:3.0.1' + dependency 'javax.xml.bind:jaxb-api:2.3.0' + dependency 'junit:junit:4.12' + dependency 'mysql:mysql-connector-java:5.1.42' + dependency 'net.jpountz.lz4:lz4:1.3.0' + dependency 'org.apache.commons:commons-csv:1.4' + dependency 'org.apache.commons:commons-email:1.5' + dependency('org.apache.httpcomponents:httpclient:4.5.2'){ + exclude 'commons-logging:commons-logging' + } + // Be aware that Log4j is used by Elasticsearch client + dependencySet(group: 'org.apache.logging.log4j', version: '2.8.2') { + entry 'log4j-api' + entry 'log4j-to-slf4j' + entry 'log4j-core' + } + dependencySet(group: 'org.apache.tomcat.embed', version: '8.5.23') { + entry 'tomcat-embed-core' + entry('tomcat-embed-jasper') { + exclude 'org.eclipse.jdt.core.compiler:ecj' + } + } + dependency 'org.assertj:assertj-core:3.9.0' + dependency 'org.assertj:assertj-guava:3.1.0' + dependency('org.codehaus.sonar:sonar-channel:4.1') { + exclude 'org.slf4j:slf4j-api' + } + dependency 'org.codehaus.sonar:sonar-classloader:1.0' + dependency('org.codehaus.woodstox:woodstox-core-lgpl:4.4.0') { + exclude 'javax.xml.stream:stax-api' + } + dependency 'org.codehaus.sonar.runner:sonar-runner-api:2.4' + dependency('org.codehaus.sonar:sonar-squid:4.1') { + exclude 'org.codehaus.sonar:sonar-check-api' + } + dependency('org.codehaus.staxmate:staxmate:2.0.1') { + exclude 'org.codehaus.woodstox:stax2-api' + exclude 'stax:stax-api' + exclude 'org.codehaus.woodstox:woodstox-core-asl' + } + dependency('org.codehaus.woodstox:stax2-api:3.1.4') { + exclude 'stax:stax-api' + } + dependency('org.dbunit:dbunit:2.4.5') { + exclude 'commons-lang:commons-lang' + exclude 'xerces:xmlParserAPIs' + exclude 'xerces:xercesImpl' + } + dependency 'org.eclipse.jetty:jetty-server:8.1.12.v20130726' + dependency 'org.eclipse.jetty:test-jetty-servlet:8.1.12.v20130726' + dependency("org.elasticsearch.client:transport:${elasticsearchVersion}") { + exclude 'org.elasticsearch.plugin:lang-mustache-client' + exclude 'org.elasticsearch.plugin:transport-netty3-client' + exclude 'commons-logging:commons-logging' + exclude 'org.elasticsearch.plugin:reindex-client' + } + dependency 'org.freemarker:freemarker:2.3.20' + dependency 'org.hamcrest:hamcrest-all:1.3' + dependency('org.mockito:mockito-core:2.13.0') { + exclude 'org.hamcrest:hamcrest-core' + } + dependency 'org.mybatis:mybatis:3.4.4' + dependency 'org.nanohttpd:nanohttpd:2.3.0' + dependency 'org.picocontainer:picocontainer:2.15' + dependencySet(group: 'org.slf4j', version: '1.7.25') { + entry 'slf4j-api' + entry 'jul-to-slf4j' + entry 'log4j-over-slf4j' + } + dependency 'org.postgresql:postgresql:42.2.1' + dependency 'org.reflections:reflections:0.9.9' + dependency 'org.simpleframework:simple:4.1.21' + dependency 'org.sonarsource.orchestrator:sonar-orchestrator:3.16.1.1446' + dependency('org.sonarsource:sonar-persistit:3.3.2') { + exclude 'commons-logging:commons-logging' + } + dependency 'org.sonarsource.update-center:sonar-update-center-common:1.18.0.487' + dependency 'org.subethamail:subethasmtp:3.1.7' + dependency 'xml-apis:xml-apis:1.4.01' + + // please keep this list alphabetically ordered + } + } + + sourceCompatibility = 1.8 + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + } + + tasks.withType(Javadoc) { + options.addStringOption('Xdoclint:none', '-quiet') + } + + task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.allSource + } + + task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = 'javadoc' + from javadoc.destinationDir + } + + test { + systemProperty 'java.awt.headless', true + jacoco.enabled = project.hasProperty('jacocoEnabled') + testLogging { + exceptionFormat 'full' // log the full stack trace (default is the 1st line of the stack trace) + events "skipped", "failed" // verbose log for failed and skipped tests (by default the name of the tests are not logged) + } + } + + def protoMainSrc = 'src/main/protobuf' + def protoTestSrc = 'src/test/protobuf' + if (file(protoMainSrc).exists() || file(protoTestSrc).exists()) { + sourceSets.main.proto.srcDir protoMainSrc // in addition to the default 'src/main/proto' + sourceSets.test.proto.srcDir protoTestSrc // in addition to the default 'src/test/proto' + protobuf { + protoc { + artifact = "com.google.protobuf:protoc:${protobufVersion}" + } + } + idea { + module { + sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/java") + testSourceDirs += file("${protobuf.generatedFilesBaseDir}/test/java") + } + } + } + + if (release) { + jar { + // do not break incremental build on non-release versions + manifest { + attributes( + 'Version': "${version}", + 'Implementation-Build': 'git rev-parse HEAD'.execute().text.trim(), + 'Build-Time': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + ) + } + } + } +} + +artifactory { + clientConfig.setIncludeEnvVars(true) + clientConfig.setEnvVarsExcludePatterns('*password*,*PASSWORD*,*secret*,*MAVEN_CMD_LINE_ARGS*,sun.java.command,*token*,*TOKEN*,*LOGIN*,*login*') + contextUrl = System.getenv('ARTIFACTORY_URL') + publish { + repository { + repoKey = System.getenv('ARTIFACTORY_DEPLOY_REPO') + username = System.getenv('ARTIFACTORY_DEPLOY_USERNAME') + password = System.getenv('ARTIFACTORY_DEPLOY_PASSWORD') + } + defaults { + properties = [ + 'vcs.revision': System.getenv('GIT_COMMIT'), + 'vcs.branch': System.getenv('GIT_BRANCH'), + 'build.name': 'sonarqube', + 'build.number': (System.getenv('BUILD_ID') ?: System.getenv('BUILD_NUMBER')) + ] + publications('mavenJava') + publishPom = true + publishIvy = false + } + } + clientConfig.info.setBuildNumber(System.getenv('BUILD_NUMBER')) + // Define the artifacts to be deployed to https://sonarsource.bintray.com on releases + clientConfig.info.addEnvironmentProperty('ARTIFACTS_TO_PUBLISH', "${project.group}:sonar-application:zip") + // The name of this variable is important because it's used by the delivery process when extracting version from Artifactory build info. + clientConfig.info.addEnvironmentProperty('PROJECT_VERSION', "${version}") +} @@ -2,6 +2,4 @@ ./stop.sh -# Parallel executions of maven modules and tests. -# Half of CPU core are used in to keep other half for OS and other programs. -mvn clean install -e -B -T0.5C -DforkCount=0.5C $* +./gradlew build $* @@ -3,16 +3,20 @@ set -euo pipefail +REPOX_ARGS="-Dorchestrator.artifactory.apiKey=$REPOX_API_KEY -Dorchestrator.artifactory.repositories=sonarsource-qa" +TEST_ARGS="-Pcix=true -DbuildNumber=$CI_BUILD_NUMBER $REPOX_ARGS" + case "$RUN_ACTIVITY" in run-db-unit-tests-*) DB_ENGINE=$(sed "s/run-db-unit-tests-//g" <<< $RUN_ACTIVITY) - ./run-db-unit-tests.sh "http://infra.internal.sonarsource.com/jenkins/orch-${DB_ENGINE}.properties" + ./run-db-unit-tests.sh "http://infra.internal.sonarsource.com/jenkins/orch-${DB_ENGINE}.properties" \ + ${TEST_ARGS} ;; run-db-integration-tests-*) DB_ENGINE=$(sed "s/run-db-integration-tests-//g" <<< $RUN_ACTIVITY | cut -d \- -f 1) - CATEGORY_GROUP=$(sed "s/run-db-integration-tests-//g" <<< $RUN_ACTIVITY | cut -d \- -f 2) + CATEGORY=$(sed "s/run-db-integration-tests-//g" <<< $RUN_ACTIVITY | cut -d \- -f 2) if [[ "$GITHUB_BRANCH" != "PULLREQUEST-"* ]] && [[ "$GITHUB_BRANCH" != "master" ]] && [[ "$GITHUB_BRANCH" != "branch-"* ]] && [[ "$GITHUB_BRANCH" != "dogfood-on-next" ]]; then # do not execute QA tests on feature branch outside pull request @@ -27,70 +31,28 @@ case "$RUN_ACTIVITY" in exit 0 else - mvn clean package -B -e -V -f tests/plugins/pom.xml - - case "$CATEGORY_GROUP" in - Category1) - CATEGORY="Category1|authorization|measure|qualityGate|source" - ;; - - Category2) - CATEGORY="issue|test|qualityModel" - ;; - - Category3) - CATEGORY="Category3|component|project" - ;; - - Category4) - CATEGORY="Category4|duplication|user|webhook" - ;; - - Category5) - CATEGORY="Category5" - ;; - - Category6) - CATEGORY="Category6|organization" - ;; - - *) - echo "unknown CATEGORY_GROUP: $CATEGORY_GROUP" - exit 1 - ;; - esac - - mvn verify \ - -f tests/pom.xml \ + ./gradlew --no-daemon --console plain -i \ + :tests:integrationTest \ -Dcategory="$CATEGORY" \ -Dorchestrator.configUrl="http://infra.internal.sonarsource.com/jenkins/orch-$DB_ENGINE.properties" \ - -Pwith-db-drivers \ - -B -e -V + ${TEST_ARGS} fi ;; run-it-released-plugins) - ./run-integration-tests.sh "Plugins" "http://infra.internal.sonarsource.com/jenkins/orch-h2.properties" + ./run-integration-tests.sh "Plugins" "http://infra.internal.sonarsource.com/jenkins/orch-h2.properties" \ + ${TEST_ARGS} ;; run-perf-tests) - if [[ "$GITHUB_BRANCH" == "PULLREQUEST-"* ]]; then - # do not execute Perf tests on feature branch outside pull request - exit 0 - else - ./run-perf-tests.sh - fi + ./run-perf-tests.sh \ + ${TEST_ARGS} ;; run-upgrade-tests-*) DB_ENGINE=$(sed "s/run-upgrade-tests-//g" <<< $RUN_ACTIVITY) - if [[ "$GITHUB_BRANCH" != "master" ]] && [[ "$GITHUB_BRANCH" != "branch-"* ]] && [[ "$DB_ENGINE" != "postgresql93" ]]; then - # restrict upgrade tests to PostgreSQL on feature branches and dogfood - exit 0 - - else - ./run-upgrade-tests.sh "http://infra.internal.sonarsource.com/jenkins/orch-${DB_ENGINE}.properties" - fi + ./run-upgrade-tests.sh "http://infra.internal.sonarsource.com/jenkins/orch-${DB_ENGINE}.properties" \ + ${TEST_ARGS} ;; *) diff --git a/cve-false-positives.xml b/cve-false-positives.xml deleted file mode 100644 index 39a01d9e778..00000000000 --- a/cve-false-positives.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://www.owasp.org/index.php/OWASP_Dependency_Check_Suppression"> - <suppress> - <notes><![CDATA[ - file name: gson-2.3.1.jar - ]]></notes> - <sha1>ECB6E1F8E4B0E84C4B886C2F14A1500CAF309757</sha1> - <cpe>cpe:/a:google:v8:2.3.1</cpe> - </suppress> - <suppress> - <notes><![CDATA[ - file name: geronimo-spec-jta-1.0-M1.jar - ]]></notes> - <sha1>1F01F94B5B83C33950E22CDE224868407FDF8B99</sha1> - <cpe>cpe:/a:apache:geronimo:1.0.m1</cpe> - </suppress> -</suppressions> diff --git a/find-classpath-conflicts.sh b/find-classpath-conflicts.sh deleted file mode 100755 index 866de0e65b4..00000000000 --- a/find-classpath-conflicts.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -# Search for duplication of classes in classpath -# This check can not be automated in build yet as current -# conflicts must be fixed. - -mvn org.basepom.maven:duplicate-finder-maven-plugin:check diff --git a/format-headers.sh b/format-headers.sh deleted file mode 100755 index e354ddf14ad..00000000000 --- a/format-headers.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Set correct copyright headers - -mvn license:format -Ptests diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000000..6ecff8dc4e2 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,4 @@ +group = org.sonarsource.sonarqube +version = 7.1-SNAPSHOT +description = 'Open source platform for continuous inspection of code quality' +projectTitle = SonarQube diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differnew file mode 100644 index 00000000000..c44b679acd3 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..568c50bf3a4 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 00000000000..cccdd3d517f --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000000..e95643d6a2c --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/plugins/build.gradle b/plugins/build.gradle new file mode 100644 index 00000000000..6b01df30596 --- /dev/null +++ b/plugins/build.gradle @@ -0,0 +1,3 @@ +sonarqube { + skipProject = true +} diff --git a/plugins/sonar-xoo-plugin/build.gradle b/plugins/sonar-xoo-plugin/build.gradle new file mode 100644 index 00000000000..ff4cd6c0080 --- /dev/null +++ b/plugins/sonar-xoo-plugin/build.gradle @@ -0,0 +1,44 @@ +configurations { + testCompile.extendsFrom(compileOnly) +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'xoo', + 'Plugin-Version': project.version, + 'Plugin-Class': 'org.sonar.xoo.XooPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': project.version, + 'SonarLint-Supported': 'true', + 'Plugin-Name': 'Xoo' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} + +artifactoryPublish.skip = false + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/plugins/sonar-xoo-plugin/pom.xml b/plugins/sonar-xoo-plugin/pom.xml deleted file mode 100644 index 0dcffa82b49..00000000000 --- a/plugins/sonar-xoo-plugin/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>sonar-xoo-plugin</artifactId> - <name>SonarQube :: Plugins :: Xoo</name> - <packaging>sonar-plugin</packaging> - <description>Sample of plugin to document and test available APIs</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>xoo</pluginKey> - <pluginName>Xoo</pluginName> - <pluginClass>org.sonar.xoo.XooPlugin</pluginClass> - <sonarLintSupported>true</sonarLintSupported> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 6adcdfb8628..00000000000 --- a/pom.xml +++ /dev/null @@ -1,1554 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.parent</groupId> - <artifactId>parent</artifactId> - <version>44</version> - </parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <packaging>pom</packaging> - <version>7.1-SNAPSHOT</version> - <name>SonarQube</name> - <url>http://www.sonarqube.org/</url> - <description>Open source platform for continuous inspection of code quality</description> - - <modules> - <module>sonar-plugin-api-deps</module> - <module>sonar-application</module> - <module>sonar-scanner-engine</module> - <module>sonar-scanner-protocol</module> - <module>sonar-scanner-engine-shaded</module> - <module>sonar-check-api</module> - <module>sonar-core</module> - <module>sonar-duplications</module> - <module>sonar-home</module> - <module>sonar-markdown</module> - <module>sonar-plugin-api</module> - <module>server</module> - <module>sonar-ws</module> - <module>sonar-ws-generator</module> - <module>sonar-testing-harness</module> - <module>plugins/sonar-xoo-plugin</module> - </modules> - - <organization> - <name>SonarSource</name> - <url>http://www.sonarsource.com</url> - </organization> - <inceptionYear>2009</inceptionYear> - - <issueManagement> - <system>jira</system> - <url>http://jira.sonarsource.com/browse/SONAR</url> - </issueManagement> - - <properties> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/dotnet/sonar-csharp-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarCSharp.version>6.7.1.4347</sonarCSharp.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/java/sonar-java-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarJava.version>5.1.0.13090</sonarJava.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/javascript/sonar-javascript-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarJavaScript.version>4.0.0.5862</sonarJavaScript.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/php/sonar-php-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarPhp.version>2.12.1.3018</sonarPhp.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/python/sonar-python-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarPython.version>1.9.0.2010</sonarPython.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/flex/sonar-flex-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarFlex.version>2.3</sonarFlex.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/xml/sonar-xml-plugin/ --> - <!-- Do not forget to exclude any new transitive dependencies --> - <sonarXml.version>1.4.3.1027</sonarXml.version> - <!-- see https://repo1.maven.org/maven2/org/sonarsource/typescript/sonar-typescript-plugin/ --> - <sonarTs.version>1.5.0.2122</sonarTs.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/scm/git/sonar-scm-git-plugin/ --> - <sonarGit.version>1.3.0.869</sonarGit.version> - <!-- see http://repo1.maven.org/maven2/org/sonarsource/scm/svn/sonar-scm-svn-plugin/ --> - <sonarSvn.version>1.6.0.860</sonarSvn.version> - <sonarUpdateCenter.version>1.18.0.487</sonarUpdateCenter.version> - <h2.version>1.3.176</h2.version> - <jetty.version>8.1.12.v20130726</jetty.version> - <logback.version>1.2.3</logback.version> - <slf4j.version>1.7.25</slf4j.version> - - <!-- Be aware that Log4j is used by Elasticsearch client --> - <log4j.version>2.8.2</log4j.version> - <tomcat.version>8.5.23</tomcat.version> - <elasticsearch.version>5.6.3</elasticsearch.version> - <orchestrator.version>3.15.2.1322</orchestrator.version> - <okhttp.version>3.7.0</okhttp.version> - <jackson.version>2.6.6</jackson.version> - <jjwt.version>0.9.0</jjwt.version> - <protobuf.version>3.5.1</protobuf.version> - - <hazelcast.version>3.8.6</hazelcast.version> - - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.min.version>3.3.9</maven.min.version> - <timestamp>${maven.build.timestamp}</timestamp> - <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format> - <license.title>SonarQube</license.title> - - <skipSanityChecks>false</skipSanityChecks> - - <argLine>-Xmx512m -Djava.awt.headless=true</argLine> - <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile> - - <!-- used for deployment to SonarSource Artifactory --> - <gitRepositoryName>sonarqube</gitRepositoryName> - <!-- Release: enable publication to Bintray --> - <artifactsToPublish>${project.groupId}:sonar-application:zip</artifactsToPublish> - </properties> - - <build> - <extensions> - <extension> - <groupId>kr.motd.maven</groupId> - <artifactId>os-maven-plugin</artifactId> - <version>1.5.0.Final</version> - </extension> - </extensions> - - <pluginManagement> - <!-- Plugins ordered by shortname (assembly, antrun ...) --> - <plugins> - <plugin> - <groupId>com.github.eirslett</groupId> - <artifactId>frontend-maven-plugin</artifactId> - <version>1.6</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-assembly-plugin</artifactId> - <version>3.1.0</version> - <configuration> - <archiverConfig> - <!-- Workaround for http://jira.codehaus.org/browse/MASSEMBLY-422 --> - <!-- 420(dec) = 644(oct) --> - <fileMode>420</fileMode> - <!-- 493(dec) = 755(oct) --> - <directoryMode>493</directoryMode> - <defaultDirectoryMode>493</defaultDirectoryMode> - </archiverConfig> - </configuration> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <version>3.0.0</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-clean-plugin</artifactId> - <version>3.0.0</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <version>3.0.0-M1</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-gpg-plugin</artifactId> - <version>1.6</version> - </plugin> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - <version>0.7.9</version> - <configuration> - <excludes> - <exclude>*_javassist_*</exclude> - </excludes> - <includes> - <include>org.sonar.*</include> - <include>org.sonarqube.*</include> - </includes> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>3.0.0-M1</version> - <configuration> - <author>false</author> - <linksource>true</linksource> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jxr-plugin</artifactId> - <version>2.5</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>3.1.0</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - <version>3.0.1</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.20.1</version> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> - <version>3.2.0</version> - </plugin> - <plugin> - <!-- not thread safe --> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-dev-maven-plugin</artifactId> - <version>1.8</version> - </plugin> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.18.0.372</version> - </plugin> - <plugin> - <groupId>org.owasp</groupId> - <artifactId>dependency-check-maven</artifactId> - <version>3.0.1</version> - <configuration> - <failBuildOnCVSS>8</failBuildOnCVSS> - <suppressionFile>dependency-check-suppressions.xml</suppressionFile> - <enableExperimental>true</enableExperimental> - </configuration> - </plugin> - <plugin> - <!-- - Detection of conflicts in classpath. - Command line is: mvn org.basepom.maven:duplicate-finder-maven-plugin:check - See https://github.com/basepom/duplicate-finder-maven-plugin - --> - <groupId>org.basepom.maven</groupId> - <artifactId>duplicate-finder-maven-plugin</artifactId> - <version>1.1.1</version> - <configuration> - <printEqualFiles>true</printEqualFiles> - <!-- - <failBuildInCaseOfDifferentContentConflict>true</failBuildInCaseOfDifferentContentConflict> - <failBuildInCaseOfEqualContentConflict>true</failBuildInCaseOfEqualContentConflict> - <failBuildInCaseOfConflict>true</failBuildInCaseOfConflict> - --> - <checkCompileClasspath>true</checkCompileClasspath> - <checkRuntimeClasspath>true</checkRuntimeClasspath> - <checkTestClasspath>false</checkTestClasspath> - </configuration> - </plugin> - <plugin> - <groupId>org.xolstice.maven.plugins</groupId> - <artifactId>protobuf-maven-plugin</artifactId> - <version>0.5.1</version> - </plugin> - <plugin> - <groupId>com.github.genthaler</groupId> - <artifactId>beanshell-maven-plugin</artifactId> - <version>1.4</version> - </plugin> - </plugins> - </pluginManagement> - - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>enforce-rules</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requirePluginVersions> - <message>Build reproducibility : always define plugin versions</message> - <banLatest>true</banLatest> - <banRelease>true</banRelease> - <phases>clean,deploy</phases> - </requirePluginVersions> - <requireReleaseDeps> - <message>No SNAPSHOT versions allowed for dependencies</message> - <onlyWhenRelease>true</onlyWhenRelease> - </requireReleaseDeps> - <requireJavaVersion> - <message>To build this project JDK ${jdk.min.version} (or upper) is required. Please install it. - </message> - <version>${jdk.min.version}</version> - </requireJavaVersion> - <requireMavenVersion> - <version>[${maven.min.version},)</version> - </requireMavenVersion> - <bannedDependencies> - <!-- See SONAR-2512 --> - <message>commons-beanutils:commons-beanutils should be used instead</message> - <excludes> - <exclude>commons-beanutils:commons-beanutils-core</exclude> - </excludes> - <searchTransitive>true</searchTransitive> - </bannedDependencies> - <requireNoRepositories> - <message>Definition of new repositories is not allowed in order to deploy to central repository. - </message> - </requireNoRepositories> - </rules> - </configuration> - </execution> - </executions> - </plugin> - <!-- - Choosing a random timezone when executing tests allows to detect - early the tests that are coupled with local environment. - --> - <plugin> - <groupId>com.github.genthaler</groupId> - <artifactId>beanshell-maven-plugin</artifactId> - <executions> - <execution> - <id>randomize-environment</id> - <phase>validate</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <quiet>true</quiet> - <script> - <![CDATA[ - String[] timezones = new String[] {"GMT-9", "UTC", "GMT+9"}; - String testTimezone = timezones[new java.util.Random().nextInt(timezones.length)]; - project.getProperties().setProperty("testTimezone", testTimezone); - logger.info("Timezone used for tests: " + testTimezone); - ]]> - </script> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jxr-plugin</artifactId> - <configuration> - <aggregate>true</aggregate> - <linkJavadoc>true</linkJavadoc> - <javadocDir>${project.reporting.outputDirectory}/${project.version}/apidocs</javadocDir> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <runOrder>random</runOrder> - <systemPropertyVariables> - <!-- keep system temp directory clean --> - <java.io.tmpdir>${project.build.directory}</java.io.tmpdir> - <!-- - See profile 'randomize-environment' - --> - <user.timezone>${testTimezone}</user.timezone> - </systemPropertyVariables> - <threadCount>1</threadCount> - </configuration> - </plugin> - </plugins> - </build> - - <dependencyManagement> - <dependencies> - <!-- SonarQube modules --> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-channel</artifactId> - <version>4.1</version> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-classloader</artifactId> - <version>1.0</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-markdown</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-dao</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-migration</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-testing</artifactId> - <version>${project.version}</version> - <type>pom</type> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-protocol</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-ws</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-home</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-server</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.update-center</groupId> - <artifactId>sonar-update-center-common</artifactId> - <version>${sonarUpdateCenter.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.orchestrator</groupId> - <artifactId>sonar-orchestrator</artifactId> - <version>${orchestrator.version}</version> - </dependency> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-squid</artifactId> - <version>4.1</version> - <exclusions> - <exclusion> - <!-- - Provided at runtime by sonar-plugin-api. - Do not use transitive version 4.1 but the current version. - --> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-check-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-xoo-plugin</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.scm.git</groupId> - <artifactId>sonar-scm-git-plugin</artifactId> - <version>${sonarGit.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.eclipse.jgit</groupId> - <artifactId>org.eclipse.jgit</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.scm.svn</groupId> - <artifactId>sonar-scm-svn-plugin</artifactId> - <version>${sonarSvn.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.tmatesoft.svnkit</groupId> - <artifactId>svnkit</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.typescript</groupId> - <artifactId>sonar-typescript-plugin</artifactId> - <version>${sonarTs.version}</version> - <type>sonar-plugin</type> - <exclusions> - <exclusion> - <groupId>org.sonarsource.analyzer-commons</groupId> - <artifactId>sonar-analyzer-commons</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-db-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-db-testing</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-testing-harness</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-bridge</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.java</groupId> - <artifactId>sonar-java-plugin</artifactId> - <version>${sonarJava.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>classworlds</groupId> - <artifactId>classworlds</artifactId> - </exclusion> - <exclusion> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.java</groupId> - <artifactId>java-surefire</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.java</groupId> - <artifactId>java-jacoco</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.java</groupId> - <artifactId>java-frontend</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.java</groupId> - <artifactId>java-checks</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.javascript</groupId> - <artifactId>sonar-javascript-plugin</artifactId> - <version>${sonarJavaScript.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.sonarsource.javascript</groupId> - <artifactId>javascript-frontend</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.javascript</groupId> - <artifactId>javascript-checks</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.dotnet</groupId> - <artifactId>sonar-csharp-plugin</artifactId> - <version>${sonarCSharp.version}</version> - <type>sonar-plugin</type> - <exclusions> - <exclusion> - <groupId>org.sonarsource.dotnet</groupId> - <artifactId>sonar-dotnet-tests-library</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.dotnet</groupId> - <artifactId>sonar-dotnet-shared-library</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.sslr-squid-bridge</groupId> - <artifactId>sslr-squid-bridge</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.php</groupId> - <artifactId>sonar-php-plugin</artifactId> - <version>${sonarPhp.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.sonarsource.php</groupId> - <artifactId>php-frontend</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.php</groupId> - <artifactId>php-checks</artifactId> - </exclusion> - <exclusion> - <groupId>com.thoughtworks.xstream</groupId> - <artifactId>xstream</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.python</groupId> - <artifactId>sonar-python-plugin</artifactId> - <version>${sonarPython.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.sonarsource.python</groupId> - <artifactId>python-squid</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.python</groupId> - <artifactId>python-checks</artifactId> - </exclusion> - <exclusion> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>woodstox-core-lgpl</artifactId> - </exclusion> - <exclusion> - <groupId>org.codehaus.staxmate</groupId> - <artifactId>staxmate</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.flex</groupId> - <artifactId>sonar-flex-plugin</artifactId> - <version>${sonarFlex.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>org.sonarsource.flex</groupId> - <artifactId>flex-squid</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.flex</groupId> - <artifactId>flex-checks</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.sonarsource.xml</groupId> - <artifactId>sonar-xml-plugin</artifactId> - <version>${sonarXml.version}</version> - <type>sonar-plugin</type> - <exclusions> - <!-- - no need for transitive dependencies as only the JAR file - is needed for the zip bundle - --> - <exclusion> - <groupId>xalan</groupId> - <artifactId>xalan</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - </exclusion> - <exclusion> - <groupId>org.sonarsource.xml</groupId> - <artifactId>xml-squid</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast</artifactId> - <version>${hazelcast.version}</version> - </dependency> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast-client</artifactId> - <version>${hazelcast.version}</version> - </dependency> - <dependency> - <groupId>org.elasticsearch.client</groupId> - <artifactId>transport</artifactId> - <version>${elasticsearch.version}</version> - <exclusions> - <exclusion> - <groupId>org.elasticsearch.plugin</groupId> - <artifactId>lang-mustache-client</artifactId> - </exclusion> - <exclusion> - <groupId>org.elasticsearch.plugin</groupId> - <artifactId>transport-netty3-client</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.github.tlrx</groupId> - <artifactId>elasticsearch-test</artifactId> - <version>1.2.1</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>18.0</version> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <version>3.0.2</version> - </dependency> - <dependency> - <groupId>commons-dbutils</groupId> - <artifactId>commons-dbutils</artifactId> - <version>1.5</version> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.4</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-csv</artifactId> - <version>1.4</version> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.8</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-email</artifactId> - <version>1.5</version> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> - </dependency> - <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - <version>1.4</version> - </dependency> - <dependency> - <groupId>com.ibm.icu</groupId> - <artifactId>icu4j</artifactId> - <!-- animal-sniffer doesn't work with 2.6.1 --> - <version>3.4.4</version> - </dependency> - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - <version>2.3.0</version> - </dependency> - <dependency> - <groupId>com.googlecode.json-simple</groupId> - <artifactId>json-simple</artifactId> - <version>1.1.1</version> - <exclusions> - <exclusion> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>io.jsonwebtoken</groupId> - <artifactId>jjwt</artifactId> - <version>${jjwt.version}</version> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - <version>${jackson.version}</version> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - <version>${jackson.version}</version> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-annotations</artifactId> - <version>${jackson.version}</version> - </dependency> - <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - <version>1.15</version> - </dependency> - <dependency> - <groupId>org.mybatis</groupId> - <artifactId>mybatis</artifactId> - <version>3.4.4</version> - </dependency> - <dependency> - <groupId>org.nanohttpd</groupId> - <artifactId>nanohttpd</artifactId> - <version>2.3.0</version> - </dependency> - <dependency> - <groupId>org.picocontainer</groupId> - <artifactId>picocontainer</artifactId> - <version>2.15</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jul-to-slf4j</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-to-slf4j</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-access</artifactId> - <version>${logback.version}</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>${logback.version}</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <version>${logback.version}</version> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <version>${h2.version}</version> - </dependency> - <dependency> - <groupId>com.microsoft.sqlserver</groupId> - <artifactId>mssql-jdbc</artifactId> - <version>6.2.2.jre8</version> - </dependency> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>5.1.42</version> - </dependency> - <dependency> - <groupId>com.oracle.jdbc</groupId> - <artifactId>ojdbc8</artifactId> - <!-- - This version is compatible with Oracle 11g and 12c : - http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#01_02 - --> - <version>12.2.0.1.0</version> - </dependency> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - <version>42.2.1</version> - </dependency> - <dependency> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>woodstox-core-lgpl</artifactId> - <version>4.4.0</version> - <exclusions> - <exclusion> - <!-- provided by Java 1.7 --> - <groupId>javax.xml.stream</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.codehaus.staxmate</groupId> - <artifactId>staxmate</artifactId> - <version>2.0.1</version> - <exclusions> - <!-- see SONAR-879 --> - <exclusion> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>stax2-api</artifactId> - </exclusion> - <exclusion> - <groupId>stax</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - <exclusion> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>woodstox-core-asl</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>2.13.0</version> - <exclusions> - <exclusion> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>3.9.0</version> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - <version>3.0.0</version> - </dependency> - <dependency> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>stax2-api</artifactId> - <version>3.1.4</version> - <exclusions> - <exclusion> - <groupId>stax</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <version>3.0.1</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <version>${jetty.version}</version> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - <version>1.3</version> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-all</artifactId> - <version>1.3</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <version>1.9.2</version> - </dependency> - <dependency> - <groupId>org.dbunit</groupId> - <artifactId>dbunit</artifactId> - <version>2.4.5</version> - <exclusions> - <!-- removing commons lang 2.1 and xerces--> - <exclusion> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xmlParserAPIs</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>test-jetty-servlet</artifactId> - <version>${jetty.version}</version> - </dependency> - <dependency> - <groupId>org.reflections</groupId> - <artifactId>reflections</artifactId> - <version>0.9.9</version> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.3.1</version> - </dependency> - <dependency> - <groupId>org.sonarsource</groupId> - <artifactId>sonar-persistit</artifactId> - <version>3.3.2</version> - <exclusions> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.github.kevinsawicki</groupId> - <artifactId>http-request</artifactId> - <version>5.4.1</version> - </dependency> - <dependency> - <groupId>org.codehaus.sonar.runner</groupId> - <artifactId>sonar-runner-api</artifactId> - <version>2.4</version> - </dependency> - <dependency> - <groupId>org.freemarker</groupId> - <artifactId>freemarker</artifactId> - <version>2.3.20</version> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - <version>${protobuf.version}</version> - </dependency> - <dependency> - <groupId>net.jpountz.lz4</groupId> - <artifactId>lz4</artifactId> - <version>1.3.0</version> - </dependency> - <dependency> - <groupId>org.subethamail</groupId> - <artifactId>subethasmtp</artifactId> - <version>3.1.7</version> - <scope>test</scope> - </dependency> - - <!-- tomcat --> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-core</artifactId> - <version>${tomcat.version}</version> - <exclusions> - <exclusion> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-jasper</artifactId> - </exclusion> - <exclusion> - <groupId>org.eclipse.jdt</groupId> - <artifactId>ecj</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>okhttp</artifactId> - <version>${okhttp.version}</version> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>mockwebserver</artifactId> - <version>${okhttp.version}</version> - </dependency> - - <!-- Using scope=provided to exclude from all transitive dependencies --> - <dependency> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - <version>1.4.01</version> - <scope>provided</scope> - </dependency> - - </dependencies> - </dependencyManagement> - - <mailingLists> - <mailingList> - <name>SonarQube users mailing list</name> - <subscribe>http://xircles.codehaus.org/projects/sonar/lists</subscribe> - <unsubscribe>http://xircles.codehaus.org/projects/sonar/lists</unsubscribe> - <post>user@sonar.codehaus.org</post> - <archive>http://www.nabble.com/Sonar-f30151.html</archive> - </mailingList> - </mailingLists> - - <scm> - <connection>scm:git:git@github.com:SonarSource/sonarqube.git</connection> - <developerConnection>scm:git:git@github.com:SonarSource/sonarqube.git</developerConnection> - <url>https://github.com/SonarSource/sonarqube</url> - <tag>HEAD</tag> - </scm> - - <ciManagement> - <system>travis-ci</system> - <url>https://travis-ci.org/SonarSource/sonarqube</url> - </ciManagement> - - <licenses> - <license> - <name>GNU LGPL 3</name> - <url>http://www.gnu.org/licenses/lgpl.txt</url> - <distribution>repo</distribution> - </license> - </licenses> - - <!-- Developers information should not be removed as it's - required for deployment --> - - <developers> - <developer> - <id>bellingard</id> - <name>Fabrice Bellingard</name> - <email>fabrice.bellingard@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>dbolkensteyn</id> - <name>Dinesh Bolkensteyn</name> - <email>dinesh.bolkensteyn@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>dgageot</id> - <name>David Gageot</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>ehartmann</id> - <name>Eric Hartmann</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>fmallet</id> - <name>Freddy Mallet</name> - <email>freddy.mallet@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>Godin</id> - <name>Evgeny Mandrikov</name> - <email>evgeny.mandrikov@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+3</timezone> - </developer> - <developer> - <id>henryju</id> - <name>Julien Henry</name> - <email>julien.henry@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>jblievremont</id> - <name>Jean-Baptiste Lievremont</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>julienlancelot</id> - <name>Julien Lancelot</name> - <email>julien.lancelot@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>olivier.gaudin</id> - <name>Olivier Gaudin</name> - <email>olivier.gaudin@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>simonbrandhof</id> - <name>Simon Brandhof</name> - <email>simon.brandhof@sonarsource.com</email> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>sns-seb</id> - <name>Sebastien Lesaint</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>stas-vilchik</id> - <name>Stas Vilchik</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - <developer> - <id>teryk</id> - <name>Teryk Bellahsene</name> - <organization>SonarSource</organization> - <timezone>+1</timezone> - </developer> - </developers> - - <profiles> - <profile> - <id>dev</id> - <properties> - <skipSanityChecks>true</skipSanityChecks> - <enforcer.skip>true</enforcer.skip> - </properties> - </profile> - <profile> - <id>release</id> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <executions> - <execution> - <id>attach-javadocs</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - - <profile> - <id>protobuf-compile</id> - <activation> - <file> - <exists>src/main/protobuf</exists> - </file> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.xolstice.maven.plugins</groupId> - <artifactId>protobuf-maven-plugin</artifactId> - <executions> - <execution> - <id>generate-protobuf-java-sources</id> - <goals> - <goal>compile</goal> - </goals> - <configuration> - <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} - </protocArtifact> - <protoSourceRoot>${project.basedir}/src/main/protobuf</protoSourceRoot> - <outputDirectory>${project.build.directory}/generated-sources/protobuf</outputDirectory> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protoc</artifactId> - <version>${protobuf.version}</version> - <type>exe</type> - <classifier>${os.detected.classifier}</classifier> - </dependency> - </dependencies> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>add-protobuf-generated-sources</id> - <phase>generate-sources</phase> - <goals> - <goal>add-source</goal> - </goals> - <configuration> - <sources> - <source>${project.build.directory}/generated-sources/protobuf</source> - </sources> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - <profile> - <id>protobuf-test-compile</id> - <activation> - <file> - <exists>src/test/protobuf</exists> - </file> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.xolstice.maven.plugins</groupId> - <artifactId>protobuf-maven-plugin</artifactId> - <executions> - <execution> - <id>generate-protobuf-java-tests</id> - <goals> - <goal>test-compile</goal> - </goals> - <configuration> - <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} - </protocArtifact> - <protoTestSourceRoot>${project.basedir}/src/test/protobuf</protoTestSourceRoot> - <outputDirectory>${project.build.directory}/generated-test-sources/protobuf</outputDirectory> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protoc</artifactId> - <version>${protobuf.version}</version> - <classifier>${os.detected.classifier}</classifier> - <type>exe</type> - </dependency> - </dependencies> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>add-protobuf-generated-tests</id> - <phase>generate-test-sources</phase> - <goals> - <goal>add-test-source</goal> - </goals> - <configuration> - <sources> - <source>${project.build.directory}/generated-test-sources/protobuf</source> - </sources> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - - <profile> - <!-- - check if maven dependencies have vulnerabilities listed in CVE - Standalone command: mvn org.owasp:dependency-check-maven:check - See http://jeremylong.github.io/DependencyCheck - --> - <id>securityCheck</id> - <build> - <plugins> - <plugin> - <groupId>org.owasp</groupId> - <artifactId>dependency-check-maven</artifactId> - <executions> - <execution> - <goals> - <goal>check</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - - <profile> - <!-- integration tests --> - <id>tests</id> - <modules> - <module>tests</module> - <module>tests/plugins</module> - </modules> - </profile> - - <profile> - <id>deploy-sonarsource</id> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>enforce-deploy-settings</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireProperty> - <property>gitRepositoryName</property> - <message>You must set name of Git repository in your pom</message> - </requireProperty> - <requireEnvironmentVariable> - <variableName>ARTIFACTORY_URL</variableName> - </requireEnvironmentVariable> - <requireEnvironmentVariable> - <variableName>ARTIFACTORY_DEPLOY_REPO</variableName> - </requireEnvironmentVariable> - <requireEnvironmentVariable> - <variableName>ARTIFACTORY_DEPLOY_USERNAME</variableName> - </requireEnvironmentVariable> - <requireEnvironmentVariable> - <variableName>ARTIFACTORY_DEPLOY_PASSWORD</variableName> - </requireEnvironmentVariable> - </rules> - <fail>true</fail> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <!-- this maven plugin is not deployed in Maven Central. It should be downloaded - from JFrog JCenter or from SonarSource repositories --> - <groupId>org.jfrog.buildinfo</groupId> - <artifactId>artifactory-maven-plugin</artifactId> - <version>${version.artifactory.plugin}</version> - <executions> - <execution> - <id>build-info</id> - <goals> - <goal>publish</goal> - </goals> - <configuration> - <artifactory> - <envVarsExcludePatterns> - *password*,*PASSWORD*,*secret*,*MAVEN_CMD_LINE_ARGS*,sun.java.command,*token*,*TOKEN*,*LOGIN*,*login* - </envVarsExcludePatterns> - <includeEnvVars>true</includeEnvVars> - <timeoutSec>60</timeoutSec> - </artifactory> - <deployProperties> - <build.name>${gitRepositoryName}</build.name> - <build.number>{{BUILD_NUMBER}}</build.number> - <pr.branch.target>{{PULL_REQUEST_BRANCH_TARGET}}</pr.branch.target> - <pr.number>{{PULL_REQUEST_NUMBER}}</pr.number> - <vcs.branch>{{GIT_BRANCH}}</vcs.branch> - <vcs.revision>{{GIT_COMMIT}}</vcs.revision> - <version>${project.version}</version> - </deployProperties> - <licenses> - <autoDiscover>true</autoDiscover> - <includePublishedArtifacts>false</includePublishedArtifacts> - <runChecks>true</runChecks> - <scopes>project,provided</scopes> - <violationRecipients>licences-control@sonarsource.com</violationRecipients> - </licenses> - <publisher> - <contextUrl>${env.ARTIFACTORY_URL}</contextUrl> - <repoKey>${env.ARTIFACTORY_DEPLOY_REPO}</repoKey> - <username>${env.ARTIFACTORY_DEPLOY_USERNAME}</username> - <password>${env.ARTIFACTORY_DEPLOY_PASSWORD}</password> - <publishBuildInfo>true</publishBuildInfo> - <publishArtifacts>true</publishArtifacts> - </publisher> - <buildInfo> - <buildName>${gitRepositoryName}</buildName> - <buildNumber>{{BUILD_NUMBER}}</buildNumber> - <buildUrl>{{CI_BUILD_URL|BUILD_URL}}</buildUrl> - <vcsRevision>{{GIT_COMMIT}}</vcsRevision> - </buildInfo> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - - </profiles> - -</project> diff --git a/quick-build.sh b/quick-build.sh deleted file mode 100755 index b53a26a27f0..00000000000 --- a/quick-build.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -#export MAVEN_OPTS='-Xmx256m' - -cat << 'EOF' - - - uuuuuuu - uu$$$$$$$$$$$uu - uu$$$$$$$$$$$$$$$$$uu - u$$$$$$$$$$$$$$$$$$$$$u - u$$$$$$$$$$$$$$$$$$$$$$$u - u$$$$$$$$$$$$$$$$$$$$$$$$$u - u$$$$$$$$$$$$$$$$$$$$$$$$$u - u$$$$$$" "$$$" "$$$$$$u - "$$$$" u$u $$$$" - $$$u u$u u$$$ - $$$u u$$$u u$$$ - "$$$$uu$$$ $$$uu$$$$" - "$$$$$$$" "$$$$$$$" - u$$$$$$$u$$$$$$$u - u$"$"$"$"$"$"$u - uuu $$u$ $ $ $ $u$$ uuu - u$$$$ $$$$$u$u$u$$$ u$$$$ - $$$$$uu "$$$$$$$$$" uu$$$$$$ -u$$$$$$$$$$$uu """"" uuuu$$$$$$$$$$ -$$$$"""$$$$$$$$$$uuu uu$$$$$$$$$"""$$$" - """ ""$$$$$$$$$$$uu ""$""" - uuuu ""$$$$$$$$$$uuu - u$$$uuu$$$$$$$$$uu ""$$$$$$$$$$$uuu$$$ - $$$$$$$$$$"""" ""$$$$$$$$$$$" - "$$$$$" ""$$$$"" - $$$" $$$$" - - - TESTS ARE DISABLED - ARE U CRAZY ? - - - -EOF - -./stop.sh -mvn clean install -B -e -V -DskipTests=true -Dmaven.source.skip=true -Pdev,skipSanityChecks $* diff --git a/run-db-unit-tests.sh b/run-db-unit-tests.sh index 7eea321bbeb..6a3d7eceb9e 100755 --- a/run-db-unit-tests.sh +++ b/run-db-unit-tests.sh @@ -4,8 +4,10 @@ set -euo pipefail ORCHESTRATOR_CONFIG_URL=$1 shift -mvn verify \ - -pl :sonar-db-core,:sonar-db-migration,:sonar-db-dao \ +./gradlew --no-daemon \ + :server:sonar-db-core:createDB \ + :server:sonar-db-core:test \ + :server:sonar-db-migration:test \ + :server:sonar-db-dao:test \ -Dorchestrator.configUrl=$ORCHESTRATOR_CONFIG_URL \ - -Dwith-db-drivers \ - -B -e -V $* + $* diff --git a/run-integration-tests.sh b/run-integration-tests.sh index 82ea7a8b1a2..78ce995c7c4 100755 --- a/run-integration-tests.sh +++ b/run-integration-tests.sh @@ -16,12 +16,8 @@ CATEGORY=$1 ORCHESTRATOR_CONFIG_URL=$2 shift 2 -cd tests/plugins -mvn clean package -B -e -V - -cd .. -mvn verify \ +./gradlew --no-daemon --console plain -i \ + :tests:integrationTest \ -Dcategory="$CATEGORY" \ - -Dorchestrator.configUrl=$ORCHESTRATOR_CONFIG_URL \ - -Pwith-db-drivers \ - -B -e -V $* + -Dorchestrator.configUrl=$ORCHESTRATOR_CONFIG_URL \ + $* diff --git a/run-perf-tests.sh b/run-perf-tests.sh index 4a5e6eba726..5374319ac43 100755 --- a/run-perf-tests.sh +++ b/run-perf-tests.sh @@ -2,5 +2,8 @@ set -euo pipefail echo 'Run performance tests' -cd tests -mvn verify -B -e -V -Dcategory=ServerPerformance $* + +./gradlew --no-daemon --console plain -i \ + :tests:integrationTest \ + -Dcategory=ServerPerformance \ + $* diff --git a/run-upgrade-tests.sh b/run-upgrade-tests.sh index 696d4eedf66..97a838557b7 100755 --- a/run-upgrade-tests.sh +++ b/run-upgrade-tests.sh @@ -13,8 +13,8 @@ set -euo pipefail ORCHESTRATOR_CONFIG_URL=$1 shift 1 -cd tests -mvn verify \ - -Pwith-db-drivers \ +./gradlew --no-daemon --console plain -i \ + :tests:integrationTest \ -Dorchestrator.configUrl=$ORCHESTRATOR_CONFIG_URL \ - -Dcategory=Upgrade -B -e -V $* + -Dcategory=Upgrade \ + $*
\ No newline at end of file diff --git a/scripts/logs.sh b/scripts/logs.sh index 24a7a5e26a7..a553c4d2ffb 100755 --- a/scripts/logs.sh +++ b/scripts/logs.sh @@ -78,7 +78,7 @@ if [ "$script_name" == "logs.sh" ]; then checkLogArgument "$LOG" ROOT=$(pwd) - cd sonar-application/target/sonarqube-* + cd sonar-application/build/distributions/sonarqube-* SQ_HOME=$(pwd) cd "$ROOT" diff --git a/scripts/start.sh b/scripts/start.sh index 24240bf7e54..b82329e15f3 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -36,15 +36,15 @@ else OS='linux-x86-64' fi -if ! ls sonar-application/target/sonarqube-*.zip &> /dev/null; then +if ! ls sonar-application/build/distributions/sonar-application-*.zip &> /dev/null; then echo 'Sources are not built' "$ROOT"/build.sh fi -cd sonar-application/target/ +cd sonar-application/build/distributions/ if ! ls sonarqube-*/bin/$OS/sonar.sh &> /dev/null; then echo "Unzipping SQ..." - unzip -qq sonarqube-*.zip + unzip -qq sonar-application-*.zip fi cd $(find sonarqube-* -type d | head -1) diff --git a/server/build.gradle b/server/build.gradle new file mode 100644 index 00000000000..49d6218996b --- /dev/null +++ b/server/build.gradle @@ -0,0 +1,5 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Server :: Parent" + } +} diff --git a/server/pom.xml b/server/pom.xml deleted file mode 100644 index c4e4974bfb0..00000000000 --- a/server/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - <artifactId>server</artifactId> - <packaging>pom</packaging> - <name>SonarQube :: Server :: Parent</name> - - <modules> - <module>sonar-process</module> - <module>sonar-main</module> - <module>sonar-db-core</module> - <module>sonar-db-migration</module> - <module>sonar-db-dao</module> - <module>sonar-db-testing</module> - <module>sonar-server</module> - <module>sonar-ce</module> - <module>sonar-plugin-bridge</module> - <module>sonar-web</module> - <module>sonar-qa-util</module> - </modules> - - <profiles> - - <profile> - <!-- SonarSource internal use --> - <id>with-db-drivers</id> - <activation> - <property> - <name>with-db-drivers</name> - </property> - </activation> - <dependencies> - <dependency> - <groupId>com.microsoft.sqlserver</groupId> - <artifactId>mssql-jdbc</artifactId> - </dependency> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - </dependency> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - </dependency> - <dependency> - <groupId>com.oracle.jdbc</groupId> - <artifactId>ojdbc8</artifactId> - </dependency> - </dependencies> - </profile> - </profiles> -</project> diff --git a/server/sonar-ce/build.gradle b/server/sonar-ce/build.gradle new file mode 100644 index 00000000000..12b42b98696 --- /dev/null +++ b/server/sonar-ce/build.gradle @@ -0,0 +1,24 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Compute Engine" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'com.google.protobuf:protobuf-java' + compile 'org.nanohttpd:nanohttpd' + compile project(':server:sonar-server') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.h2database:h2' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.assertj:assertj-guava' + testCompile 'org.mockito:mockito-core' + testCompile project(':server:sonar-db-testing') +} diff --git a/server/sonar-ce/pom.xml b/server/sonar-ce/pom.xml deleted file mode 100644 index 525eaf843e8..00000000000 --- a/server/sonar-ce/pom.xml +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-ce</artifactId> - <name>SonarQube :: Compute Engine</name> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-server</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.nanohttpd</groupId> - <artifactId>nanohttpd</artifactId> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-testing</artifactId> - <type>pom</type> - <scope>test</scope> - </dependency> - </dependencies> - -</project> diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java index 5b093ff3156..de97563d60e 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java @@ -28,9 +28,9 @@ import java.util.Optional; import java.util.Set; import javax.annotation.CheckForNull; import javax.annotation.Nullable; -import org.apache.log4j.Logger; import org.sonar.api.ce.ComputeEngineSide; import org.sonar.api.utils.System2; +import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.ce.container.ComputeEngineStatus; import org.sonar.ce.monitoring.CEQueueStatus; @@ -50,7 +50,7 @@ import static java.util.Objects.requireNonNull; @ComputeEngineSide public class InternalCeQueueImpl extends CeQueueImpl implements InternalCeQueue { - private static final org.sonar.api.utils.log.Logger LOG = Loggers.get(InternalCeQueueImpl.class); + private static final Logger LOG = Loggers.get(InternalCeQueueImpl.class); private static final int MAX_EXECUTION_COUNT = 1; @@ -145,7 +145,7 @@ public class InternalCeQueueImpl extends CeQueueImpl implements InternalCeQueue printStream.flush(); return out.toString(); } catch (IOException e) { - Logger.getLogger(InternalCeQueueImpl.class).debug("Failed to getStacktrace out of error", e); + LOG.debug("Failed to getStacktrace out of error", e); return null; } } diff --git a/server/sonar-db-core/build.gradle b/server/sonar-db-core/build.gradle new file mode 100644 index 00000000000..bfb6921b78b --- /dev/null +++ b/server/sonar-db-core/build.gradle @@ -0,0 +1,71 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Database Core" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'ch.qos.logback:logback-classic' + compile 'ch.qos.logback:logback-core' + compile 'commons-codec:commons-codec' + compile 'commons-dbcp:commons-dbcp' + compile 'commons-dbutils:commons-dbutils' + compile 'net.jpountz.lz4:lz4' + compile 'org.apache.commons:commons-csv' + compile 'org.mybatis:mybatis' + compile 'org.slf4j:slf4j-api' + compile project(':server:sonar-process') + compile project(':sonar-core') + compile project(':sonar-scanner-protocol') + compile project(path: ':sonar-plugin-api', configuration: 'shadow') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.h2database:h2' + testCompile 'com.microsoft.sqlserver:mssql-jdbc' + testCompile 'com.oracle.jdbc:ojdbc8' + testCompile 'junit:junit' + testCompile 'mysql:mysql-connector-java' + testCompile 'org.assertj:assertj-core' + testCompile 'org.dbunit:dbunit' + testCompile 'org.mockito:mockito-core' + testCompile 'org.postgresql:postgresql' + testCompile 'org.sonarsource.orchestrator:sonar-orchestrator' + testCompile project(':sonar-testing-harness') +} + +task createDB(type:JavaExec) { + main = 'org.sonar.db.CreateDb' + classpath = sourceSets.test.runtimeClasspath + systemProperty 'orchestrator.configUrl', System.getProperty('orchestrator.configUrl') + systemProperty 'sonar.runtimeVersion', version + systemProperty 'orchestrator.artifactory.apiKey', System.getProperty('orchestrator.artifactory.apiKey') + systemProperty 'orchestrator.artifactory.repositories', System.getProperty('orchestrator.artifactory.repositories') +} + +test { + if (System.hasProperty('orchestrator.configUrl')) + systemProperty 'orchestrator.configUrl', System.getProperty('orchestrator.configUrl') +} + +task testJar(type: Jar) { + classifier = 'tests' + from sourceSets.test.output +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact testJar + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-db-core/pom.xml b/server/sonar-db-core/pom.xml deleted file mode 100644 index 85e9af2469e..00000000000 --- a/server/sonar-db-core/pom.xml +++ /dev/null @@ -1,197 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-db-core</artifactId> - - <name>SonarQube :: Database Core</name> - <description>Core Database support</description> - - <dependencies> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-csv</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-protocol</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - </dependency> - <dependency> - <groupId>org.mybatis</groupId> - <artifactId>mybatis</artifactId> - </dependency> - <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - </dependency> - <dependency> - <groupId>commons-dbutils</groupId> - <artifactId>commons-dbutils</artifactId> - </dependency> - <dependency> - <groupId>net.jpountz.lz4</groupId> - <artifactId>lz4</artifactId> - </dependency> - - <!-- logging --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - </dependency> - - <!-- tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.dbunit</groupId> - <artifactId>dbunit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - - - <!-- - JDBC drivers for MyBatis integration tests. - They can't be moved to the profile run-mybatis-its because - --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <excludes> - <exclude>logback-test.xml</exclude> - </excludes> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>create-db</id> - <activation> - <property> - <name>env.SONARSOURCE_QA</name> - <value>true</value> - </property> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>download-sq</id> - <goals> - <goal>get</goal> - </goals> - <phase>generate-test-resources</phase> - <configuration> - <artifact>${project.groupId}:sonar-application:${project.version}:zip</artifact> - <transitive>false</transitive> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.sonarsource.orchestrator</groupId> - <artifactId>orchestrator-maven-plugin</artifactId> - <version>${orchestrator.version}</version> - <executions> - <execution> - <id>create-db</id> - <goals> - <goal>create-db</goal> - </goals> - <phase>generate-test-resources</phase> - <configuration> - <sqVersion>${project.version}</sqVersion> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java b/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java new file mode 100644 index 00000000000..b448b25fa87 --- /dev/null +++ b/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java @@ -0,0 +1,49 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.db; + +import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.OrchestratorBuilder; +import com.sonar.orchestrator.locator.FileLocation; +import org.apache.commons.lang.StringUtils; + +import java.io.File; + +public class CreateDb { + + public static void main(String[] args) { + OrchestratorBuilder builder = Orchestrator.builderEnv(); + String version = System.getProperty("sonar.runtimeVersion"); + if (StringUtils.isEmpty(version)) { + File zip = FileLocation.byWildcardMavenFilename(new File("../../sonar-application/build/distributions"), "sonar-application-*.zip").getFile(); + builder.setZipFile(zip); + } else { + builder.setSonarVersion(version); + } + builder.setOrchestratorProperty("orchestrator.workspaceDir", "build/it"); + + Orchestrator orchestrator = builder.build(); + try { + orchestrator.start(); + } finally { + orchestrator.stop(); + } + } +} diff --git a/server/sonar-db-dao/build.gradle b/server/sonar-db-dao/build.gradle new file mode 100644 index 00000000000..24a45f382e1 --- /dev/null +++ b/server/sonar-db-dao/build.gradle @@ -0,0 +1,51 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: DAO" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile project(':server:sonar-db-core') + compile project(':server:sonar-db-migration') + compile project(':sonar-core') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.h2database:h2' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.assertj:assertj-guava' + testCompile 'org.dbunit:dbunit' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') + testCompile project(':server:sonar-db-core').sourceSets.test.output + + testCompileOnly 'com.google.code.findbugs:jsr305' +} + +test { + if (System.hasProperty('orchestrator.configUrl')) + systemProperty 'orchestrator.configUrl', System.getProperty('orchestrator.configUrl') +} + +task testJar(type: Jar) { + classifier = 'tests' + from sourceSets.test.output +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact testJar + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-db-dao/pom.xml b/server/sonar-db-dao/pom.xml deleted file mode 100644 index 0d240e996e4..00000000000 --- a/server/sonar-db-dao/pom.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-db-dao</artifactId> - - <name>SonarQube :: DAO</name> - <description>DAO layer for SonarQube</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-db-core</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-db-migration</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <!-- tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-core</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.dbunit</groupId> - <artifactId>dbunit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <scope>test</scope> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <excludes> - <exclude>logback-test.xml</exclude> - </excludes> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - </profiles> -</project> diff --git a/server/sonar-db-migration/build.gradle b/server/sonar-db-migration/build.gradle new file mode 100644 index 00000000000..2198734c3a1 --- /dev/null +++ b/server/sonar-db-migration/build.gradle @@ -0,0 +1,42 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Database Migration" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile project(':server:sonar-db-core') + compile project(':sonar-core') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.h2database:h2' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.dbunit:dbunit' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') + testCompile project(':server:sonar-db-core').sourceSets.test.output +} + +test { + if (System.hasProperty('orchestrator.configUrl')) + systemProperty 'orchestrator.configUrl', System.getProperty('orchestrator.configUrl') +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-db-migration/pom.xml b/server/sonar-db-migration/pom.xml deleted file mode 100644 index 1d75a632dde..00000000000 --- a/server/sonar-db-migration/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-db-migration</artifactId> - - <name>SonarQube :: Database Migration</name> - <description>Create SonarQube schema</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-db-core</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <!-- tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-core</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.dbunit</groupId> - <artifactId>dbunit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - -</project> diff --git a/server/sonar-db-testing/build.gradle b/server/sonar-db-testing/build.gradle new file mode 100644 index 00000000000..a7fddde0420 --- /dev/null +++ b/server/sonar-db-testing/build.gradle @@ -0,0 +1,15 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: DB testing" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'org.dbunit:dbunit' + + compile project(':server:sonar-db-core').sourceSets.test.output + compile project(':server:sonar-db-dao').sourceSets.test.output + compile project(':sonar-testing-harness') +} diff --git a/server/sonar-db-testing/pom.xml b/server/sonar-db-testing/pom.xml deleted file mode 100644 index 6799c132ba3..00000000000 --- a/server/sonar-db-testing/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-db-testing</artifactId> - <packaging>pom</packaging> - - <name>SonarQube :: DB testing</name> - <description>DB testing for SonarQube</description> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-core</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-dao</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - </dependency> - <dependency> - <groupId>org.dbunit</groupId> - <artifactId>dbunit</artifactId> - </dependency> - - </dependencies> - - <build> - </build> - - <profiles> - </profiles> -</project> diff --git a/server/sonar-main/build.gradle b/server/sonar-main/build.gradle new file mode 100644 index 00000000000..936ace8238d --- /dev/null +++ b/server/sonar-main/build.gradle @@ -0,0 +1,30 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Main Process" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'ch.qos.logback:logback-classic' + // Required by our usage of Guava for clustering : CeWorkerFactoryImpl.getClusteredWorkerUUIDs() + compile 'com.google.guava:guava' + compile 'com.hazelcast:hazelcast' + compile 'com.hazelcast:hazelcast-client' + compile 'org.apache.logging.log4j:log4j-to-slf4j' + compile 'org.apache.logging.log4j:log4j-api' + compile 'org.elasticsearch.client:transport' + compile 'org.slf4j:slf4j-api' + compile 'org.yaml:snakeyaml' + compile project(':server:sonar-process') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') +} diff --git a/server/sonar-main/pom.xml b/server/sonar-main/pom.xml deleted file mode 100644 index 2540b6c76d9..00000000000 --- a/server/sonar-main/pom.xml +++ /dev/null @@ -1,120 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>sonar-main</artifactId> - <name>SonarQube :: Main Process</name> - <description>Server process used to bootstrap Elasticsearch, Web Server and - Compute Engine processes. Could be merged with sonar-application.</description> - - <properties> - <!-- - version as stored in JAR and displayed in webapp. It is - overridden on Travis when replacing SNAPSHOT version by - build unique version, for instance "6.3.0.12345". - --> - <buildVersion>${project.version}</buildVersion> - </properties> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-to-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast</artifactId> - </dependency> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast-client</artifactId> - </dependency> - <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - </dependency> - <!-- - Required by our usage of Guava for clustering : CeWorkerFactoryImpl.getClusteredWorkerUUIDs() - --> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>org.elasticsearch.client</groupId> - <artifactId>transport</artifactId> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - - </dependencies> - - <build> - <resources> - <resource> - <!-- Used to resolve variables in file sonarqube-version.txt --> - <directory>src/main/resources</directory> - <filtering>true</filtering> - </resource> - </resources> - </build> -</project> diff --git a/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java b/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java index 7c4c8c1b340..fdf1937b95d 100644 --- a/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java +++ b/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java @@ -152,8 +152,7 @@ public class CommandFactoryImpl implements CommandFactory { .setEnvVariable(PATH_LOGS.getKey(), props.nonNullValue(PATH_LOGS.getKey())) .setArgument("sonar.cluster.web.startupLeader", Boolean.toString(leader)) .setClassName("org.sonar.server.app.WebServer") - .addClasspath("./lib/common/*") - .addClasspath("./lib/server/*"); + .addClasspath("./lib/common/*"); String driverPath = props.value(JDBC_DRIVER_PATH.getKey()); if (driverPath != null) { command.addClasspath(driverPath); @@ -176,9 +175,7 @@ public class CommandFactoryImpl implements CommandFactory { .setArguments(props.rawProperties()) .setJvmOptions(jvmOptions) .setClassName("org.sonar.ce.app.CeServer") - .addClasspath("./lib/common/*") - .addClasspath("./lib/server/*") - .addClasspath("./lib/ce/*"); + .addClasspath("./lib/common/*"); String driverPath = props.value(JDBC_DRIVER_PATH.getKey()); if (driverPath != null) { command.addClasspath(driverPath); diff --git a/server/sonar-main/src/test/java/org/sonar/application/command/CommandFactoryImplTest.java b/server/sonar-main/src/test/java/org/sonar/application/command/CommandFactoryImplTest.java index 4438fb768b6..08cf403ea09 100644 --- a/server/sonar-main/src/test/java/org/sonar/application/command/CommandFactoryImplTest.java +++ b/server/sonar-main/src/test/java/org/sonar/application/command/CommandFactoryImplTest.java @@ -96,7 +96,7 @@ public class CommandFactoryImplTest { } @Test - public void createEsCommand_throws_ISE_if_es_binary_is_not_found() throws Exception { + public void createEsCommand_throws_ISE_if_es_binary_is_not_found() { expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Cannot find elasticsearch binary"); @@ -194,13 +194,13 @@ public class CommandFactoryImplTest { } @Test - public void createWebCommand_returns_command_for_default_settings() throws Exception { + public void createWebCommand_returns_command_for_default_settings() { JavaCommand command = newFactory(new Properties()).createWebCommand(true); assertThat(command.getClassName()).isEqualTo("org.sonar.server.app.WebServer"); assertThat(command.getWorkDir().getAbsolutePath()).isEqualTo(homeDir.getAbsolutePath()); assertThat(command.getClasspath()) - .containsExactlyInAnyOrder("./lib/common/*", "./lib/server/*"); + .containsExactly("./lib/common/*"); assertThat(command.getJvmOptions().getAll()) // enforced values .contains("-Djava.awt.headless=true", "-Dfile.encoding=UTF-8") @@ -219,13 +219,13 @@ public class CommandFactoryImplTest { } @Test - public void createCeCommand_returns_command_for_default_settings() throws Exception { + public void createCeCommand_returns_command_for_default_settings() { JavaCommand command = newFactory(new Properties()).createCeCommand(); assertThat(command.getClassName()).isEqualTo("org.sonar.ce.app.CeServer"); assertThat(command.getWorkDir().getAbsolutePath()).isEqualTo(homeDir.getAbsolutePath()); assertThat(command.getClasspath()) - .containsExactlyInAnyOrder("./lib/common/*", "./lib/server/*", "./lib/ce/*"); + .containsExactly("./lib/common/*"); assertThat(command.getJvmOptions().getAll()) // enforced values .contains("-Djava.awt.headless=true", "-Dfile.encoding=UTF-8") @@ -244,7 +244,7 @@ public class CommandFactoryImplTest { } @Test - public void createWebCommand_configures_command_with_overridden_settings() throws Exception { + public void createWebCommand_configures_command_with_overridden_settings() { Properties props = new Properties(); props.setProperty("sonar.web.port", "1234"); props.setProperty("sonar.web.javaOpts", "-Xmx10G"); @@ -275,7 +275,7 @@ public class CommandFactoryImplTest { JavaCommand command = newFactory(props).createWebCommand(true); assertThat(command.getClasspath()) - .containsExactlyInAnyOrder("./lib/common/*", "./lib/server/*", driverFile.getAbsolutePath()); + .containsExactlyInAnyOrder("./lib/common/*", driverFile.getAbsolutePath()); } private void prepareEsFileSystem() throws IOException { @@ -283,7 +283,7 @@ public class CommandFactoryImplTest { FileUtils.touch(new File(homeDir, "elasticsearch/bin/elasticsearch.bat")); } - private CommandFactoryImpl newFactory(Properties userProps) throws IOException { + private CommandFactoryImpl newFactory(Properties userProps) { return newFactory(userProps, System2.INSTANCE); } diff --git a/server/sonar-plugin-bridge/build.gradle b/server/sonar-plugin-bridge/build.gradle new file mode 100644 index 00000000000..ea490280280 --- /dev/null +++ b/server/sonar-plugin-bridge/build.gradle @@ -0,0 +1,27 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Priviledged Plugin Bridge" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile project(path: ':sonar-plugin-api', configuration: 'shadow') + compile project(':sonar-core') + + compileOnly 'com.google.code.findbugs:jsr305' +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-plugin-bridge/pom.xml b/server/sonar-plugin-bridge/pom.xml deleted file mode 100644 index efb105c904a..00000000000 --- a/server/sonar-plugin-bridge/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-plugin-bridge</artifactId> - <name>SonarQube :: Priviledged Plugin Bridge</name> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - </dependencies> - -</project> diff --git a/server/sonar-process/build.gradle b/server/sonar-process/build.gradle new file mode 100644 index 00000000000..b88b1371edb --- /dev/null +++ b/server/sonar-process/build.gradle @@ -0,0 +1,49 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Process" + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'ch.qos.logback:logback-classic' + compile 'commons-codec:commons-codec' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compile 'com.google.guava:guava' + compile 'com.hazelcast:hazelcast' + compile 'org.slf4j:jul-to-slf4j' + compile 'org.slf4j:slf4j-api' + + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly 'com.google.protobuf:protobuf-java' + compileOnly 'org.nanohttpd:nanohttpd' + + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.google.protobuf:protobuf-java' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') + // Workaround to resolve dependencies of eclipse specific packaging: https://issues.gradle.org/browse/GRADLE-2076 + testCompile module('org.eclipse.jetty:jetty-server') { + dependencies( + "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016@jar", + "org.eclipse.jetty:jetty-continuation:8.1.2.v20120308", + "org.eclipse.jetty:jetty-http:8.1.2.v20120308" + ) + } +} + +artifactoryPublish.skip = false + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-process/pom.xml b/server/sonar-process/pom.xml deleted file mode 100644 index 11de60a732b..00000000000 --- a/server/sonar-process/pom.xml +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../</relativePath> - </parent> - - <artifactId>sonar-process</artifactId> - <name>SonarQube :: Process</name> - <description>Library shared by all kinds of server processes: main, web and compute engine</description> - - <properties> - <sonar.exclusions>target/generated-sources/**/*</sonar.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jul-to-slf4j</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <!-- only if org.sonar.process.systeminfo HTTP server is being used --> - <groupId>org.nanohttpd</groupId> - <artifactId>nanohttpd</artifactId> - <optional>true</optional> - </dependency> - <dependency> - <!-- only if org.sonar.process.systeminfo.protobuf classes are used --> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - <optional>true</optional> - </dependency> - - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> diff --git a/server/sonar-qa-util/build.gradle b/server/sonar-qa-util/build.gradle new file mode 100644 index 00000000000..aab7d38eb88 --- /dev/null +++ b/server/sonar-qa-util/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + skipProject = true +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'com.codeborne:selenide:4.8' + // required version 23.0 for selenide + compile 'com.google.guava:guava:23.0' + compile 'org.assertj:assertj-core' + compile 'org.sonarsource.orchestrator:sonar-orchestrator' + compile project(':sonar-ws') + + compileOnly 'com.google.code.findbugs:jsr305' +} + +artifactoryPublish.skip = false + +// Required for core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-qa-util/pom.xml b/server/sonar-qa-util/pom.xml deleted file mode 100644 index 601b9c7b2c1..00000000000 --- a/server/sonar-qa-util/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-qa-util</artifactId> - <name>SonarQube :: Utilities for QA Tests</name> - - <properties> - <sonar.coverage.exclusions>src/main/java/**/*</sonar.coverage.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-ws</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>com.codeborne</groupId> - <artifactId>selenide</artifactId> - <version>4.8</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <!-- required for selenide --> - <version>23.0</version> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.orchestrator</groupId> - <artifactId>sonar-orchestrator</artifactId> - <version>${orchestrator.version}</version> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - </dependencies> - -</project> diff --git a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/SelenideConfig.java b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/SelenideConfig.java index 30d8b84d573..65696d65689 100644 --- a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/SelenideConfig.java +++ b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/SelenideConfig.java @@ -57,7 +57,7 @@ public class SelenideConfig { Configuration.browser = browser.name(); Configuration.baseUrl = orchestrator.getServer().getUrl(); Configuration.timeout = 8_000; - Configuration.reportsFolder = "target/screenshots"; + Configuration.reportsFolder = "build/screenshots"; Configuration.screenshots = true; Configuration.captureJavascriptErrors = true; Configuration.savePageSource = true; diff --git a/server/sonar-server/build.gradle b/server/sonar-server/build.gradle new file mode 100644 index 00000000000..327e4a3ad86 --- /dev/null +++ b/server/sonar-server/build.gradle @@ -0,0 +1,96 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Server" + } +} + +sourceSets { + test { + resources { + srcDirs += ['src/test/projects'] + } + } +} + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'ch.qos.logback:logback-access' + compile 'ch.qos.logback:logback-classic' + compile 'ch.qos.logback:logback-core' + compile 'commons-dbcp:commons-dbcp' + compile 'commons-dbutils:commons-dbutils' + compile 'com.googlecode.java-diff-utils:diffutils' + compile 'com.google.code.gson:gson' + compile 'com.google.protobuf:protobuf-java' + compile 'com.hazelcast:hazelcast-client' + compile 'io.jsonwebtoken:jjwt' + compile 'javax.xml.bind:jaxb-api' + compile 'org.apache.commons:commons-email' + compile 'org.apache.httpcomponents:httpclient' + compile 'org.apache.logging.log4j:log4j-api' + compile 'org.apache.tomcat.embed:tomcat-embed-core' + compile 'org.elasticsearch.client:transport' + compile 'org.picocontainer:picocontainer' + compile 'org.slf4j:jul-to-slf4j' + compile 'org.slf4j:slf4j-api' + compile 'org.sonarsource.update-center:sonar-update-center-common' + + compile project(':server:sonar-db-dao') + compile project(':server:sonar-db-migration') + compile project(':server:sonar-plugin-bridge') + compile project(':server:sonar-process') + compile project(':sonar-core') + compile project(':sonar-scanner-protocol') + compile(project(':sonar-markdown')) { + // already shaded with sonar-plugin-api + exclude group: 'org.codehaus.sonar', module: 'sonar-channel' + } + compile project(path: ':sonar-plugin-api', configuration: 'shadow') + compile project(':sonar-ws') + + compileOnly 'com.google.code.findbugs:jsr305' + // not a transitive dep. At runtime lib/jdbc/h2 is used + compileOnly 'com.h2database:h2' + + testCompile 'com.github.kevinsawicki:http-request' + testCompile 'com.github.tlrx:elasticsearch-test' + testCompile 'com.google.code.findbugs:jsr305' + testCompile 'com.h2database:h2' + testCompile 'com.squareup.okhttp3:mockwebserver' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'junit:junit' + testCompile 'org.apache.logging.log4j:log4j-api' + testCompile 'org.apache.logging.log4j:log4j-core' + testCompile 'org.assertj:assertj-core' + testCompile 'org.assertj:assertj-guava' + testCompile("org.elasticsearch.test:framework:${elasticsearchVersion}") { + // should be excluded to avoid ES go into "test mode" and require to run EsTester-based UTs with RandomizedRunner + exclude group: 'com.carrotsearch.randomizedtesting', module: 'randomizedtesting-runner' + exclude group: 'org.elasticsearch', module: 'securemock' + } + testCompile 'org.hamcrest:hamcrest-all' + testCompile 'org.mockito:mockito-core' + testCompile 'org.reflections:reflections' + testCompile 'org.subethamail:subethasmtp' + testCompile project(':server:sonar-db-testing') +} + +task testJar(type: Jar) { + classifier = 'tests' + from sourceSets.test.output +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact testJar + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/server/sonar-server/pom.xml b/server/sonar-server/pom.xml deleted file mode 100644 index c9b9bd499fb..00000000000 --- a/server/sonar-server/pom.xml +++ /dev/null @@ -1,344 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-server</artifactId> - <name>SonarQube :: Server</name> - - <dependencies> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jul-to-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-access</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-core</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-dao</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-migration</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-protocol</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-markdown</artifactId> - <exclusions> - <exclusion> - <!-- already shaded with sonar-plugin-api --> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-channel</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${project.version}</version> - <exclusions> - <exclusion> - <!-- not used at runtime --> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.maven.shared</groupId> - <artifactId>maven-dependency-tree</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.maven.shared</groupId> - <artifactId>maven-common-artifact-filters</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.maven</groupId> - <artifactId>maven-project</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-ws</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-bridge</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.update-center</groupId> - <artifactId>sonar-update-center-common</artifactId> - </dependency> - <dependency> - <groupId>commons-dbutils</groupId> - <artifactId>commons-dbutils</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-email</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.googlecode.java-diff-utils</groupId> - <artifactId>diffutils</artifactId> - <version>1.2</version> - </dependency> - <dependency> - <groupId>org.picocontainer</groupId> - <artifactId>picocontainer</artifactId> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - </dependency> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.2</version> - </dependency> - <dependency> - <groupId>org.elasticsearch.client</groupId> - <artifactId>transport</artifactId> - <version>${elasticsearch.version}</version> - </dependency> - <dependency> - <groupId>org.elasticsearch.test</groupId> - <artifactId>framework</artifactId> - <version>${elasticsearch.version}</version> - <scope>test</scope> - <exclusions> - <!--should be excluded to avoid ES go into "test mode" and require to run EsTester-based UTs with RandomizedRunner--> - <exclusion> - <groupId>com.carrotsearch.randomizedtesting</groupId> - <artifactId>randomizedtesting-runner</artifactId> - </exclusion> - <exclusion> - <groupId>org.elasticsearch</groupId> - <artifactId>securemock</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.hazelcast</groupId> - <artifactId>hazelcast-client</artifactId> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>io.jsonwebtoken</groupId> - <artifactId>jjwt</artifactId> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <!-- TODO to be removed --> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-all</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-db-testing</artifactId> - <type>pom</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.github.tlrx</groupId> - <artifactId>elasticsearch-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.github.kevinsawicki</groupId> - <artifactId>http-request</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.reflections</groupId> - <artifactId>reflections</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.subethamail</groupId> - <artifactId>subethasmtp</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>mockwebserver</artifactId> - <scope>test</scope> - </dependency> - - </dependencies> - - <build> - <resources> - <resource> - <directory>src/main/resources</directory> - <filtering>true</filtering> - <includes> - <include>build.properties</include> - </includes> - </resource> - <resource> - <directory>src/main/resources</directory> - <filtering>false</filtering> - <excludes> - <exclude>build.properties</exclude> - </excludes> - </resource> - </resources> - <testResources> - <testResource> - <directory>src/test/resources</directory> - <filtering>false</filtering> - </testResource> - <testResource> - <directory>src/test/projects</directory> - <filtering>false</filtering> - </testResource> - </testResources> - - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <excludes> - <exclude>logback-test.xml</exclude> - </excludes> - </configuration> - </execution> - </executions> - <configuration> - <archive> - <manifest> - <addClasspath>true</addClasspath> - <mainClass>org.sonar.server.app.App</mainClass> - </manifest> - </archive> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <!--see https://discuss.elastic.co/t/migrate-elasticsearch-java-api-to-version-5-in-spring-io-platform-application/72661--> - <classpathDependencyExcludes> - <classpathDependencyExcludes>org.apache.logging.log4j:log4j-to-slf4j</classpathDependencyExcludes> - </classpathDependencyExcludes> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/server/sonar-server/src/main/java/org/sonar/ce/log/CeLogging.java b/server/sonar-server/src/main/java/org/sonar/ce/log/CeLogging.java index f9408af6976..b6569cdaf91 100644 --- a/server/sonar-server/src/main/java/org/sonar/ce/log/CeLogging.java +++ b/server/sonar-server/src/main/java/org/sonar/ce/log/CeLogging.java @@ -19,7 +19,7 @@ */ package org.sonar.ce.log; -import org.apache.log4j.MDC; +import org.slf4j.MDC; import org.sonar.ce.queue.CeTask; public class CeLogging { diff --git a/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java b/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java index 4992c82be62..0d53ec3bb5b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java +++ b/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java @@ -61,6 +61,7 @@ class EmbeddedTomcat { tomcat.start(); new TomcatStartupLogs(Loggers.get(getClass())).log(tomcat); } catch (LifecycleException e) { + Loggers.get(EmbeddedTomcat.class).error("Fail to start web server", e); Throwables.propagate(e); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/es/EsClientProvider.java b/server/sonar-server/src/main/java/org/sonar/server/es/EsClientProvider.java index ff85a78bac9..319bb38f0bf 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/es/EsClientProvider.java +++ b/server/sonar-server/src/main/java/org/sonar/server/es/EsClientProvider.java @@ -32,7 +32,6 @@ import org.elasticsearch.common.network.NetworkModule; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.transport.TransportAddress; -import org.elasticsearch.index.reindex.ReindexPlugin; import org.elasticsearch.join.ParentJoinPlugin; import org.elasticsearch.percolator.PercolatorPlugin; import org.elasticsearch.transport.Netty4Plugin; @@ -103,7 +102,7 @@ public class EsClientProvider extends ProviderAdapter { static class MinimalTransportClient extends TransportClient { MinimalTransportClient(Settings settings) { - super(settings, unmodifiableList(Arrays.asList(Netty4Plugin.class, ReindexPlugin.class, PercolatorPlugin.class, ParentJoinPlugin.class))); + super(settings, unmodifiableList(Arrays.asList(Netty4Plugin.class, PercolatorPlugin.class, ParentJoinPlugin.class))); } @Override diff --git a/server/sonar-web/build.gradle b/server/sonar-web/build.gradle new file mode 100644 index 00000000000..ee71411cf03 --- /dev/null +++ b/server/sonar-web/build.gradle @@ -0,0 +1,44 @@ +sonarqube { + properties { + property "sonar.projectName", "${projectTitle} :: Web" + property "sonar.sources", "src/main/js" + property "sonar.tests", "src/main/js" + property "sonar.test.inclusions", "src/main/js/**/__tests__/**" + property "sonar.exclusions", "src/main/js/libs/third-party/**/*,src/main/js/libs/require.js,src/main/js/**/__tests__/**" + } +} + +apply plugin: 'com.moowork.node' +apply plugin: 'war' + +configurations { + branding +} +dependencies { + branding 'com.sonarsource:sonarsource-branding:1.3.0.307@war' +} +task unzipBranding(type: Copy) { + into projectDir + from { zipTree(configurations.branding.singleFile) } + include '**/*.js' + include '**/*.svg' + includeEmptyDirs = false +} + +node { + version = '8.5.0' + yarnVersion = '1.1.0' + download = true +} + +yarn_run { + if (release) { dependsOn unzipBranding } + inputs.dir('scripts') + inputs.dir('src/main/js') + inputs.file('build.gradle') + outputs.dir('src/main/webapp') + + args = ['build'] +} + +war.dependsOn yarn_run diff --git a/server/sonar-web/pom.xml b/server/sonar-web/pom.xml deleted file mode 100644 index 7f51af819f5..00000000000 --- a/server/sonar-web/pom.xml +++ /dev/null @@ -1,256 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>server</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-web</artifactId> - <packaging>war</packaging> - <name>SonarQube :: Web</name> - - <properties> - <!-- self-analysis --> - <sonar.sources>src/main/js</sonar.sources> - <sonar.tests>src/main/js</sonar.tests> - <sonar.test.inclusions>src/main/js/**/__tests__/**</sonar.test.inclusions> - <sonar.exclusions>src/main/js/libs/third-party/**/*,src/main/js/libs/require.js,src/main/js/**/__tests__/**</sonar.exclusions> - <yarn.script>build</yarn.script> - </properties> - - <build> - <resources> - <resource> - <directory>src/main/resources</directory> - <filtering>true</filtering> - </resource> - </resources> - - <plugins> - <plugin> - <artifactId>maven-clean-plugin</artifactId> - <configuration> - <filesets> - <fileset> - <directory>${basedir}/src/main/webapp/deploy</directory> - <includes> - <include>**/*</include> - </includes> - <excludes> - <exclude>readme.txt</exclude> - </excludes> - </fileset> - </filesets> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <executions> - <execution> - <phase>process-resources</phase> - <goals> - <goal>copy-resources</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}/${project.build.finalName}/</outputDirectory> - <resources> - <resource> - <directory>${basedir}/src/main/webapp</directory> - <filtering>false</filtering> - </resource> - </resources> - </configuration> - </execution> - <execution> - <id>copy-generated-webapp</id> - <!-- must be after the execution of grunt --> - <phase>process-resources</phase> - <goals> - <goal>copy-resources</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory> - <overwrite>true</overwrite> - <resources> - <resource> - <directory>src/main/webapp/build</directory> - <filtering>false</filtering> - </resource> - </resources> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>com.github.eirslett</groupId> - <artifactId>frontend-maven-plugin</artifactId> - <executions> - <execution> - <id>install node and yarn</id> - <goals> - <goal>install-node-and-yarn</goal> - </goals> - <configuration> - <nodeVersion>v8.5.0</nodeVersion> - <yarnVersion>v1.1.0</yarnVersion> - </configuration> - </execution> - <execution> - <id>yarn install</id> - <goals> - <goal>yarn</goal> - </goals> - </execution> - <execution> - <phase>generate-resources</phase> - <id>yarn run script</id> - <goals> - <goal>yarn</goal> - </goals> - <configuration> - <arguments>run ${yarn.script}</arguments> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> - <configuration> - <packagingExcludes> - **/*.log,*.iml,WEB-INF/script/,WEB-INF/test/,javascripts/*-min.js,stylesheets/*-min.css,javascripts/tests/**/*, - build/**,templates/** - </packagingExcludes> - <warSourceExcludes> - js/**,css/** - </warSourceExcludes> - <archive> - <manifestEntries> - <Version>${project.version}</Version> - <!-- ${buildNumber} is the Git revision. It's generated by the buildnumber-maven-plugin --> - <Implementation-Build>${buildNumber}</Implementation-Build> - <Build-Time>${timestamp}</Build-Time> - </manifestEntries> - </archive> - </configuration> - </plugin> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <configuration> - <excludes> - <exclude>src/main/webapp/**/*</exclude> - </excludes> - </configuration> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>release</id> - <build> - <plugins> - <plugin> - <artifactId>maven-clean-plugin</artifactId> - <configuration> - <filesets> - <fileset> - <directory>${basedir}/node</directory> - <includes> - <include>**/*</include> - </includes> - </fileset> - <fileset> - <directory>${basedir}/node_modules</directory> - <includes> - <include>**/*</include> - </includes> - </fileset> - <fileset> - <directory>${basedir}/src/main/webapp/deploy</directory> - <includes> - <include>**/*</include> - </includes> - <excludes> - <exclude>readme.txt</exclude> - </excludes> - </fileset> - </filesets> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-branding</id> - <phase>initialize</phase> - <goals> - <goal>unpack</goal> - </goals> - </execution> - </executions> - <configuration> - <artifactItems> - <artifactItem> - <groupId>com.sonarsource</groupId> - <artifactId>sonarsource-branding</artifactId> - <type>war</type> - <overWrite>true</overWrite> - <outputDirectory>${project.basedir}</outputDirectory> - <includes>**/*.js,**/*.svg</includes> - </artifactItem> - </artifactItems> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <id>empty-javadoc-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>javadoc</classifier> - </configuration> - </execution> - <execution> - <id>empty-sources-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>sources</classifier> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - <dependencies> - <dependency> - <groupId>com.sonarsource</groupId> - <artifactId>sonarsource-branding</artifactId> - <version>1.3.0.307</version> - <type>war</type> - <scope>runtime</scope> - </dependency> - </dependencies> - </profile> - <profile> - <id>dev</id> - <properties> - <yarn.script>build-fast</yarn.script> - </properties> - </profile> - </profiles> - -</project> diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000000..0009ccb1366 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,61 @@ +rootProject.name = 'sonarqube' + +include 'plugins:sonar-xoo-plugin' + +include 'server:sonar-ce' +include 'server:sonar-db-testing' +include 'server:sonar-db-core' +include 'server:sonar-db-dao' +include 'server:sonar-db-migration' +include 'server:sonar-main' +include 'server:sonar-plugin-bridge' +include 'server:sonar-process' +include 'server:sonar-qa-util' +include 'server:sonar-server' +include 'server:sonar-web' + +include 'sonar-application' +include 'sonar-check-api' +include 'sonar-core' +include 'sonar-duplications' +include 'sonar-home' +include 'sonar-markdown' +include 'sonar-plugin-api' +include 'sonar-plugin-api-deps' +include 'sonar-scanner-engine' +include 'sonar-scanner-engine-shaded' +include 'sonar-scanner-protocol' +include 'sonar-testing-harness' +include 'sonar-ws' +include 'sonar-ws-generator' + +include 'tests:plugins:access-secured-props-plugin' +include 'tests:plugins:backdating-customplugin' +include 'tests:plugins:backdating-plugin-v1' +include 'tests:plugins:backdating-plugin-v2' +include 'tests:plugins:base-auth-plugin' +include 'tests:plugins:batch-plugin' +include 'tests:plugins:extension-lifecycle-plugin' +include 'tests:plugins:fake-billing-plugin' +include 'tests:plugins:fake-governance-plugin' +include 'tests:plugins:foo-plugin-v1' +include 'tests:plugins:foo-plugin-v2' +include 'tests:plugins:global-property-change-plugin' +include 'tests:plugins:issue-filter-plugin' +include 'tests:plugins:l10n-fr-pack' +include 'tests:plugins:license-plugin' +include 'tests:plugins:oauth2-auth-plugin' +include 'tests:plugins:posttask-plugin' +include 'tests:plugins:project-builder-plugin' +include 'tests:plugins:property-relocation-plugin' +include 'tests:plugins:property-sets-plugin' +include 'tests:plugins:security-plugin' +include 'tests:plugins:server-plugin' +include 'tests:plugins:settings-encryption-plugin' +include 'tests:plugins:settings-plugin' +include 'tests:plugins:sonar-fake-plugin' +include 'tests:plugins:sonar-subcategories-plugin' +include 'tests:plugins:ui-extensions-plugin' +include 'tests:plugins:wait-at-platform-level4-plugin' +include 'tests:plugins:ws-plugin' +include 'tests' diff --git a/sonar-application/assembly-common.xml b/sonar-application/assembly-common.xml deleted file mode 100644 index 8d85b77149b..00000000000 --- a/sonar-application/assembly-common.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<assembly> - <id>common-lib-dir</id> - <formats> - <format>dir</format> - </formats> - <baseDirectory>/</baseDirectory> - <dependencySets> - - <dependencySet> - <outputDirectory>/</outputDirectory> - <useTransitiveFiltering>true</useTransitiveFiltering> - <useProjectArtifact>false</useProjectArtifact> - <scope>runtime</scope> - </dependencySet> - - </dependencySets> - -</assembly> diff --git a/sonar-application/assembly.xml b/sonar-application/assembly.xml deleted file mode 100644 index ccbf0a97315..00000000000 --- a/sonar-application/assembly.xml +++ /dev/null @@ -1,213 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<assembly> - <id>distribution</id> - <formats> - <format>${assembly.format}</format> - </formats> - <includeBaseDirectory>true</includeBaseDirectory> - <dependencySets> - <!-- Libraries --> - <dependencySet> - <outputDirectory>lib</outputDirectory> - <useTransitiveDependencies>false</useTransitiveDependencies> - <useTransitiveFiltering>false</useTransitiveFiltering> - <useProjectArtifact>true</useProjectArtifact> - <includes> - <include>org.sonarsource.sonarqube:sonar-application</include> - </includes> - </dependencySet> - - <dependencySet> - <outputDirectory>lib/jsw</outputDirectory> - <useTransitiveDependencies>false</useTransitiveDependencies> - <useTransitiveFiltering>false</useTransitiveFiltering> - <useProjectArtifact>false</useProjectArtifact> - <includes> - <include>tanukisoft:wrapper</include> - </includes> - <scope>provided</scope> - </dependencySet> - - <dependencySet> - <outputDirectory>lib/server</outputDirectory> - <useProjectArtifact>false</useProjectArtifact> - <useTransitiveDependencies>true</useTransitiveDependencies> - <useTransitiveFiltering>true</useTransitiveFiltering> - <includes> - <include>org.sonarsource.sonarqube:sonar-server</include> - </includes> - <scope>provided</scope> - </dependencySet> - - <dependencySet> - <outputDirectory>lib/ce</outputDirectory> - <useProjectArtifact>false</useProjectArtifact> - <useTransitiveDependencies>true</useTransitiveDependencies> - <useTransitiveFiltering>true</useTransitiveFiltering> - <includes> - <include>org.sonarsource.sonarqube:sonar-ce</include> - </includes> - <scope>provided</scope> - </dependencySet> - - <!-- Scanner Engine that is returned by batch/index WS --> - <dependencySet> - <outputDirectory>lib/scanner</outputDirectory> - <useTransitiveDependencies>false</useTransitiveDependencies> - <includes> - <include>org.sonarsource.sonarqube:sonar-scanner-engine-shaded</include> - </includes> - <scope>provided</scope> - </dependencySet> - <!-- Plugins --> - <dependencySet> - <outputDirectory>lib/bundled-plugins</outputDirectory> - <useTransitiveDependencies>false</useTransitiveDependencies> - <includes> - <include>org.sonarsource.*:sonar-*-plugin</include> - </includes> - <scope>provided</scope> - </dependencySet> - <!-- Server --> - <dependencySet> - <outputDirectory>web</outputDirectory> - <includes> - <include>org.sonarsource.sonarqube:sonar-web</include> - </includes> - <unpack>true</unpack> - <scope>provided</scope> - </dependencySet> - <!-- JDBC drivers --> - <dependencySet> - <outputDirectory>lib/jdbc/mssql/</outputDirectory> - <includes> - <include>com.microsoft.sqlserver:mssql-jdbc</include> - </includes> - <unpack>false</unpack> - <scope>provided</scope> - </dependencySet> - <dependencySet> - <outputDirectory>lib/jdbc/mysql/</outputDirectory> - <includes> - <include>mysql:mysql-connector-java</include> - </includes> - <unpack>false</unpack> - <scope>provided</scope> - </dependencySet> - <dependencySet> - <outputDirectory>lib/jdbc/postgresql/</outputDirectory> - <includes> - <include>org.postgresql:postgresql</include> - </includes> - <unpack>false</unpack> - <scope>provided</scope> - </dependencySet> - <dependencySet> - <outputDirectory>lib/jdbc/h2/</outputDirectory> - <includes> - <include>com.h2database:h2</include> - </includes> - <unpack>false</unpack> - <scope>provided</scope> - </dependencySet> - </dependencySets> - - <fileSets> - <!-- common directory --> - <fileSet> - <directory>target/common</directory> - <outputDirectory>lib/common</outputDirectory> - </fileSet> - <!-- wrapper binaries --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory></outputDirectory> - <includes> - <include>bin/*/lib/*.so</include> - <include>bin/*/lib/*.jnilib</include> - <include>bin/*/lib/*.dll</include> - <include>bin/*/wrapper</include> - <include>bin/*/wrapper.exe</include> - <include>elasticsearch/bin/elasticsearch</include> - <include>elasticsearch/bin/elasticsearch.bat</include> - </includes> - <fileMode>0755</fileMode> - </fileSet> - <!-- Configuration Files --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory></outputDirectory> - <includes> - <include>conf/**</include> - </includes> - <!-- See SONAR-2580 - for better readability of configuration files on Windows: --> - <lineEnding>dos</lineEnding> - <fileMode>0644</fileMode> - </fileSet> - <!-- Windows Scripts --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory></outputDirectory> - <includes> - <include>**/*.bat</include> - <include>**/*.cmd</include> - </includes> - <lineEnding>dos</lineEnding> - <fileMode>0644</fileMode> - </fileSet> - <!-- Linux Scripts --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory></outputDirectory> - <includes> - <include>**/*.sh</include> - <include>**/ant</include> - <include>**/antRun</include> - </includes> - <lineEnding>unix</lineEnding> - <fileMode>0755</fileMode> - </fileSet> - <!-- Other stuff --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory></outputDirectory> - <excludes> - <exclude>conf/**</exclude> - <exclude>**/*.bat</exclude> - <exclude>**/*.cmd</exclude> - <exclude>**/*.sh</exclude> - <exclude>**/ant</exclude> - <exclude>**/antRun</exclude> - <!--exclude ES modules by default in the distribution that we don't use--> - <exclude>elasticsearch/modules/lang-expression/</exclude> - <exclude>elasticsearch/modules/lang-groovy/</exclude> - <exclude>elasticsearch/modules/lang-mustache/</exclude> - <exclude>elasticsearch/modules/lang-painless/</exclude> - <exclude>elasticsearch/modules/transport-netty3/</exclude> - </excludes> - <fileMode>0644</fileMode> - </fileSet> - <!-- Empty directories --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory>extensions/jdbc-driver/oracle/</outputDirectory> - <excludes> - <exclude>**/*</exclude> - </excludes> - </fileSet> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory>logs/</outputDirectory> - <excludes> - <exclude>**/*</exclude> - </excludes> - </fileSet> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory>elasticsearch/plugins</outputDirectory> - <excludes> - <exclude>*/**</exclude> - </excludes> - </fileSet> - </fileSets> -</assembly> diff --git a/sonar-application/build.gradle b/sonar-application/build.gradle new file mode 100644 index 00000000000..bb8b58b74dc --- /dev/null +++ b/sonar-application/build.gradle @@ -0,0 +1,148 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Application" + } +} + +configurations { + ce + jsw + scanner + server + webapp + jdbc_mssql { + transitive = false + } + jdbc_mysql { + transitive = false + } + jdbc_postgresql { + transitive = false + } + jdbc_h2 { + transitive = false + } + bundledPlugin { + transitive = false + } +} + +dependencies { + compile 'org.elasticsearch.client:transport' + compile project(':server:sonar-main') + compile project(':server:sonar-process') + + compileOnly 'com.google.code.findbugs:jsr305' + + ce project(':server:sonar-ce') + jsw 'tanukisoft:wrapper:3.2.3' + scanner project(path: ':sonar-scanner-engine-shaded', configuration: 'shadow') + server project(':server:sonar-server') + webapp project(path: ':server:sonar-web', configuration: 'archives') + + jdbc_mssql 'com.microsoft.sqlserver:mssql-jdbc' + jdbc_mysql 'mysql:mysql-connector-java' + jdbc_postgresql 'org.postgresql:postgresql' + jdbc_h2 'com.h2database:h2' + + bundledPlugin 'org.sonarsource.java:sonar-java-plugin:5.1.0.13090@jar' + bundledPlugin 'org.sonarsource.javascript:sonar-javascript-plugin:4.0.0.5862@jar' + bundledPlugin 'org.sonarsource.dotnet:sonar-csharp-plugin:6.7.1.4347@jar' + bundledPlugin 'org.sonarsource.scm.git:sonar-scm-git-plugin:1.4.0.1037@jar' + bundledPlugin 'org.sonarsource.scm.svn:sonar-scm-svn-plugin:1.7.0.1017@jar' + bundledPlugin 'org.sonarsource.php:sonar-php-plugin:2.12.1.3018@jar' + bundledPlugin 'org.sonarsource.python:sonar-python-plugin:1.9.0.2010@jar' + bundledPlugin 'org.sonarsource.flex:sonar-flex-plugin:2.3@jar' + bundledPlugin 'org.sonarsource.xml:sonar-xml-plugin:1.4.3.1027@jar' + bundledPlugin 'org.sonarsource.typescript:sonar-typescript-plugin:1.5.0.2122@jar' + + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + +} + +jar { + manifest { + attributes( + 'Class-Path': configurations.compile.collect { "common/${it.getName()}" }.join(' '), + 'Main-Class': 'org.sonar.application.App' + ) + } +} + +task zip(type: Zip) { + duplicatesStrategy DuplicatesStrategy.EXCLUDE + def archiveDir = "sonarqube-$version" + into("${archiveDir}/") { + from file('src/main/assembly') + exclude 'elasticsearch/modules/lang-expression/**' + exclude 'elasticsearch/modules/lang-groovy/**' + exclude 'elasticsearch/modules/lang-mustache/**' + exclude 'elasticsearch/modules/lang-painless/**' + exclude 'elasticsearch/modules/transport-netty3/**' + } + // Create the empty dir (plugins) required by elasticsearch + into("${archiveDir}/elasticsearch/") { + from "$buildDir/elasticsearch" + } + into("${archiveDir}/lib/") { + from jar + } + into("${archiveDir}/lib/bundled-plugins/") { + from configurations.bundledPlugin + } + into("${archiveDir}/lib/jsw/") { + from configurations.jsw + } + into("${archiveDir}/lib/scanner/") { + from configurations.scanner + } + into("${archiveDir}/lib/common/") { + from configurations.ce + configurations.server + configurations.compile + } + dependsOn configurations.webapp + into("${archiveDir}/web/") { + from { + configurations.webapp.files.collect { zipTree(it) } + } + } + into("${archiveDir}/lib/jdbc/mssql/") { + from configurations.jdbc_mssql + } + into("${archiveDir}/lib/jdbc/mysql/") { + from configurations.jdbc_mysql + } + into("${archiveDir}/lib/jdbc/postgresql/") { + from configurations.jdbc_postgresql + } + into("${archiveDir}/lib/jdbc/h2/") { + from configurations.jdbc_h2 + } +} +// Create the empty dir required by elasticsearch +zip.doFirst { + new File(buildDir, 'elasticsearch/plugins').mkdirs() +} +// Check the size of the archive +zip.doLast { + def minLength = 155000000 + def maxLength = 170000000 + def length = new File(distsDir, archiveName).length() + if (length < minLength) + throw new GradleException("$archiveName size ($length) too small. Min is $minLength") + if (length > maxLength) + throw new GradleException("$distsDir/$archiveName size ($length) too large. Max is $maxLength") +} + +assemble.dependsOn zip + +artifactoryPublish.skip = false + +publishing { + publications { + mavenJava(MavenPublication) { + artifact zip + } + } +} diff --git a/sonar-application/pom.xml b/sonar-application/pom.xml deleted file mode 100644 index f599fb98c6a..00000000000 --- a/sonar-application/pom.xml +++ /dev/null @@ -1,271 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-application</artifactId> - <packaging>jar</packaging> - <name>SonarQube :: Application</name> - <description>Package the standalone distribution</description> - - <properties> - <assembly.recompressZippedFiles>true</assembly.recompressZippedFiles> - <assembly.format>zip</assembly.format> - <checksum.failOnError>true</checksum.failOnError> - </properties> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-main</artifactId> - <version>${project.version}</version> - </dependency> - <!--must declare this dependency of sonar-process-monitor here, again,--> - <!--to allow copying it and its dependencies into lib/common--> - <dependency> - <groupId>org.elasticsearch.client</groupId> - <artifactId>transport</artifactId> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-server</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-ce</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-engine-shaded</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-web</artifactId> - <version>${project.version}</version> - <type>war</type> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>com.microsoft.sqlserver</groupId> - <artifactId>mssql-jdbc</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <scope>provided</scope> - </dependency> - - <!-- default plugins --> - <dependency> - <groupId>org.sonarsource.java</groupId> - <artifactId>sonar-java-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.javascript</groupId> - <artifactId>sonar-javascript-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.dotnet</groupId> - <artifactId>sonar-csharp-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.flex</groupId> - <artifactId>sonar-flex-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.scm.git</groupId> - <artifactId>sonar-scm-git-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.scm.svn</groupId> - <artifactId>sonar-scm-svn-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.php</groupId> - <artifactId>sonar-php-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.python</groupId> - <artifactId>sonar-python-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.typescript</groupId> - <artifactId>sonar-typescript-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.xml</groupId> - <artifactId>sonar-xml-plugin</artifactId> - <type>sonar-plugin</type> - <scope>provided</scope> - </dependency> - <dependency> - <!-- do not upgrade because of licensing change --> - <groupId>tanukisoft</groupId> - <artifactId>wrapper</artifactId> - <version>3.2.3</version> - <scope>provided</scope> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <configuration> - <archive> - <index>true</index> - <manifest> - <addClasspath>true</addClasspath> - <classpathPrefix>common</classpathPrefix> - <mainClass>org.sonar.application.App</mainClass> - </manifest> - <manifestEntries> - <mode>distribution</mode> - <url>${project.url}</url> - </manifestEntries> - </archive> - </configuration> - </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <id>assemble-common-lib-dir</id> - <phase>prepare-package</phase> - <goals> - <goal>single</goal> - </goals> - <configuration> - <appendAssemblyId>false</appendAssemblyId> - <finalName>common</finalName> - <descriptors> - <descriptor>assembly-common.xml</descriptor> - </descriptors> - </configuration> - </execution> - <execution> - <id>assemble-distribution-zip</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - <configuration> - <appendAssemblyId>false</appendAssemblyId> - <finalName>sonarqube-${project.version}</finalName> - <descriptors> - <descriptor>assembly.xml</descriptor> - </descriptors> - <recompressZippedFiles>${assembly.recompressZippedFiles}</recompressZippedFiles> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>enforce-distribution-size</id> - <goals> - <goal>enforce</goal> - </goals> - <phase>verify</phase> - <configuration> - <rules> - <requireFilesSize> - <minsize>155000000</minsize> - <maxsize>170000000</maxsize> - <files> - <file>${project.build.directory}/sonarqube-${project.version}.zip</file> - </files> - </requireFilesSize> - </rules> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - <profiles> - <profile> - <id>dev</id> - <properties> - <assembly.recompressZippedFiles>false</assembly.recompressZippedFiles> - </properties> - </profile> - </profiles> - -</project> diff --git a/sonar-application/src/main/assembly/logs/README.txt b/sonar-application/src/main/assembly/logs/README.txt new file mode 100644 index 00000000000..5608b3348d8 --- /dev/null +++ b/sonar-application/src/main/assembly/logs/README.txt @@ -0,0 +1 @@ +This directory contains log files. See advanced configuration in conf/sonar.properties. diff --git a/sonar-check-api/build.gradle b/sonar-check-api/build.gradle new file mode 100644 index 00000000000..c7749e3dd38 --- /dev/null +++ b/sonar-check-api/build.gradle @@ -0,0 +1,11 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Check API" + } +} + +dependencies { + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'junit:junit' +} diff --git a/sonar-check-api/pom.xml b/sonar-check-api/pom.xml deleted file mode 100644 index 76cc534f50f..00000000000 --- a/sonar-check-api/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - <artifactId>sonar-check-api</artifactId> - <name>SonarQube :: Check API</name> - <description>Check API</description> - - <dependencies> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> diff --git a/sonar-core/build.gradle b/sonar-core/build.gradle new file mode 100644 index 00000000000..e9cd948163e --- /dev/null +++ b/sonar-core/build.gradle @@ -0,0 +1,53 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Core" + } +} + +configurations { + includeInResources +} + +dependencies { + compileOnly 'com.google.code.findbugs:jsr305' + compile 'commons-codec:commons-codec' + compile 'org.apache.commons:commons-csv' + compile 'org.picocontainer:picocontainer' + compile 'com.google.protobuf:protobuf-java' + compile 'org.codehaus.sonar:sonar-classloader' + compile project(path: ':sonar-plugin-api', configuration: 'shadow') + compile 'org.sonarsource.update-center:sonar-update-center-common' + compile 'org.slf4j:slf4j-api' + compile 'ch.qos.logback:logback-classic' + compile 'ch.qos.logback:logback-core' + + includeInResources project(path: ':sonar-plugin-api-deps', configuration: 'shadow') + + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') + testCompile 'org.simpleframework:simple' + testCompileOnly 'com.google.code.findbugs:jsr305' +} + +// sonar-plugin-api.jar is copied into target JAR file +processResources { + into('/') { + from configurations.includeInResources + rename '(.*)-' + project.version + '-all.jar', '$1.jar' + } +} + +// Used by sonar-db-core to run DB Unit Tests +artifactoryPublish.skip = false +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-core/pom.xml b/sonar-core/pom.xml deleted file mode 100644 index a0e5e0af6ac..00000000000 --- a/sonar-core/pom.xml +++ /dev/null @@ -1,166 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-core</artifactId> - - <name>SonarQube :: Core</name> - <description>Library shared by analyzer and server</description> - - <properties> - <sonar.exclusions>target/generated-sources/**/*,target/generated-test-sources/**/*</sonar.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-csv</artifactId> - </dependency> - <dependency> - <groupId>org.picocontainer</groupId> - <artifactId>picocontainer</artifactId> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-classloader</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.update-center</groupId> - <artifactId>sonar-update-center-common</artifactId> - </dependency> - - <!-- logging --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </dependency> - - <dependency> - <!-- sonar-api-deps.jar is copied into target JAR file --> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api-deps</artifactId> - <version>${project.version}</version> - <optional>true</optional> - <scope>runtime</scope> - </dependency> - - - <!-- tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.simpleframework</groupId> - <artifactId>simple</artifactId> - <version>4.1.21</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.basepom.maven</groupId> - <artifactId>duplicate-finder-maven-plugin</artifactId> - <configuration> - <ignoredDependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api-deps</artifactId> - </dependency> - </ignoredDependencies> - </configuration> - </plugin> - </plugins> - </pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-deprecated-api-deps</id> - <phase>generate-resources</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api-deps</artifactId> - <destFileName>sonar-plugin-api-deps.jar</destFileName> - </artifactItem> - </artifactItems> - <outputDirectory>${project.build.outputDirectory}</outputDirectory> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/sonar-duplications/build.gradle b/sonar-duplications/build.gradle new file mode 100644 index 00000000000..540f457de8f --- /dev/null +++ b/sonar-duplications/build.gradle @@ -0,0 +1,18 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Duplications" + } +} + +dependencies { + compile 'org.codehaus.sonar:sonar-channel' + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'ch.qos.logback:logback-classic' + testCompile 'commons-io:commons-io' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile 'pmd:pmd:4.3' +} diff --git a/sonar-duplications/pom.xml b/sonar-duplications/pom.xml deleted file mode 100644 index 8c7d106fb8a..00000000000 --- a/sonar-duplications/pom.xml +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-duplications</artifactId> - - <name>SonarQube :: Duplications</name> - <description>Detect duplicated code</description> - - <properties> - <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile> - </properties> - - <dependencies> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-channel</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>pmd</groupId> - <artifactId>pmd</artifactId> - <version>4.3</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - </exclusion> - <exclusion> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> diff --git a/sonar-home/build.gradle b/sonar-home/build.gradle new file mode 100644 index 00000000000..a367fdd6c35 --- /dev/null +++ b/sonar-home/build.gradle @@ -0,0 +1,28 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Home" + } +} + +dependencies { + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'commons-codec:commons-codec' + testCompile 'commons-io:commons-io' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-home/pom.xml b/sonar-home/pom.xml deleted file mode 100644 index 658a04347bf..00000000000 --- a/sonar-home/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-home</artifactId> - - <name>SonarQube :: Home</name> - <description>Access the user home directory that contains cache of files</description> - - <dependencies> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <!-- used to compare results --> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <scope>test</scope> - </dependency> - - </dependencies> - -</project> diff --git a/sonar-markdown/build.gradle b/sonar-markdown/build.gradle new file mode 100644 index 00000000000..28282eadad5 --- /dev/null +++ b/sonar-markdown/build.gradle @@ -0,0 +1,28 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Markdown" + } +} + +dependencies { + compile 'commons-lang:commons-lang' + compile 'org.codehaus.sonar:sonar-channel' + compile 'org.slf4j:slf4j-api' + + testCompile 'ch.qos.logback:logback-classic' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-markdown/pom.xml b/sonar-markdown/pom.xml deleted file mode 100644 index d02542ac8be..00000000000 --- a/sonar-markdown/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>..</relativePath> - </parent> - - <artifactId>sonar-markdown</artifactId> - <name>SonarQube :: Markdown</name> - - <dependencies> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-channel</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> diff --git a/sonar-plugin-api-deps/build.gradle b/sonar-plugin-api-deps/build.gradle new file mode 100644 index 00000000000..0c99ac23fb6 --- /dev/null +++ b/sonar-plugin-api-deps/build.gradle @@ -0,0 +1,39 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Plugin API Dependencies" + } +} + +apply plugin: 'com.github.johnrengelman.shadow' + +dependencies { + // Versions must not be changed and overridden from root build.gradle (see dependencyManagement section). + // These are the versions defined in SQ 5.1 + compile 'com.google.code.gson:gson:2.3.1' + compile 'com.google.guava:guava:10.0.1' + compile 'commons-beanutils:commons-beanutils:1.9.3' + compile 'commons-codec:commons-codec:1.8' + compile 'commons-collections:commons-collections:3.2.2' + compile 'org.apache.commons:commons-email:1.3.2' + compile 'commons-io:commons-io:2.4' + compile 'commons-lang:commons-lang:2.6' + compile('dom4j:dom4j:1.6.1') { + exclude group: 'xml-apis' + } + compile 'org.picocontainer:picocontainer:2.14.3' + compile 'org.slf4j:slf4j-api:1.7.10' + compile 'ch.qos.logback:logback-classic:1.1.2' + compile 'ch.qos.logback:logback-core:1.1.2' + compile('org.apache.maven:maven-core:3.0.5') { + exclude group: 'classworlds', module: 'classworlds' + exclude group: 'org.sonatype.sisu', module: 'sisu-guava' + } + compile 'org.apache.maven:maven-artifact:3.0.5' + compile('org.codehaus.sonar:sonar-squid:4.1') { + exclude group: 'org.codehaus.sonar', module: 'sonar-check-api' + } + compile('org.codehaus.sonar:sonar-java-api:5.1') { + exclude group: 'org.codehaus.sonar', module: 'sonar-deprecated' + exclude group: 'org.codehaus.sonar', module: 'sonar-plugin-api' + } +} diff --git a/sonar-plugin-api-deps/pom.xml b/sonar-plugin-api-deps/pom.xml deleted file mode 100644 index 5576fb917ee..00000000000 --- a/sonar-plugin-api-deps/pom.xml +++ /dev/null @@ -1,231 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-plugin-api-deps</artifactId> - - <name>SonarQube :: Plugin API Dependencies</name> - <description>Deprecated transitive dependencies of sonar-plugin-api</description> - - <properties> - <maven.deploy.skip>true</maven.deploy.skip> - </properties> - - <dependencies> - - <!-- - Versions must not be changed and overridden from parent pom. These are - the versions defined in SQ 5.1 - --> - - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.3.1</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>10.0.1</version> - </dependency> - <dependency> - <groupId>commons-beanutils</groupId> - <artifactId>commons-beanutils</artifactId> - <version>1.9.3</version> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.8</version> - </dependency> - <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - <version>3.2.2</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-email</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.4</version> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> - </dependency> - <dependency> - <groupId>dom4j</groupId> - <artifactId>dom4j</artifactId> - <version>1.6.1</version> - </dependency> - <dependency> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - <version>1.4.01</version> - </dependency> - <dependency> - <groupId>org.picocontainer</groupId> - <artifactId>picocontainer</artifactId> - <version>2.14.3</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>1.7.10</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>1.1.2</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <version>1.1.2</version> - </dependency> - <!-- Needed by old versions of Java plugin (JavaClasspath) --> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-core</artifactId> - <version>3.0.5</version> - <exclusions> - <exclusion> - <!-- See SONAR-2455 --> - <groupId>classworlds</groupId> - <artifactId>classworlds</artifactId> - </exclusion> - <exclusion> - <!-- this fork conflicts with google's guava --> - <groupId>org.sonatype.sisu</groupId> - <artifactId>sisu-guava</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-artifact</artifactId> - <version>3.0.5</version> - </dependency> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-squid</artifactId> - <version>4.1</version> - <exclusions> - <exclusion> - <!-- - Provided at runtime by sonar-plugin-api. - Do not use transitive version 4.1 but the current version. - --> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-check-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-java-api</artifactId> - <version>5.1</version> - <exclusions> - <exclusion> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-deprecated</artifactId> - </exclusion> - <exclusion> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-plugin-api</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <minimizeJar>false</minimizeJar> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <id>empty-javadoc-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>javadoc</classifier> - </configuration> - </execution> - <execution> - <id>empty-sources-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>sources</classifier> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <!-- - This module contains deprecated dependencies (containing vulnerability issues) for plugins built for SonarQube < 5.2 - It will be removed for 7.0 - --> - <profile> - <!-- - check if maven dependencies have vulnerabilities listed in CVE - Standalone command: mvn org.owasp:dependency-check-maven:check - See http://jeremylong.github.io/DependencyCheck - --> - <id>securityCheck</id> - <build> - <plugins> - <plugin> - <groupId>org.owasp</groupId> - <artifactId>dependency-check-maven</artifactId> - <executions> - <execution> - <goals> - <goal>check</goal> - </goals> - <configuration> - <skip>true</skip> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - -</project> diff --git a/sonar-plugin-api/build.gradle b/sonar-plugin-api/build.gradle new file mode 100644 index 00000000000..8bf8e28798b --- /dev/null +++ b/sonar-plugin-api/build.gradle @@ -0,0 +1,82 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Plugin API" + } +} + +apply plugin: 'com.github.johnrengelman.shadow' + +dependencies { + // please keep the list grouped by configuration and ordered by name + + compile 'commons-codec:commons-codec' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compile 'com.google.code.gson:gson' + compile 'com.google.guava:guava' + + // shaded, but not relocated + compile project(':sonar-check-api') + compile(project(':sonar-duplications')) { + exclude group: 'org.slf4', module: 'slf4j-api' + } + + shadow 'org.codehaus.staxmate:staxmate' + shadow 'org.codehaus.woodstox:stax2-api' + shadow 'org.codehaus.woodstox:woodstox-core-lgpl' + + compileOnly 'ch.qos.logback:logback-classic' + compileOnly 'ch.qos.logback:logback-core' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly 'javax.servlet:javax.servlet-api' + compileOnly 'junit:junit' + compileOnly 'org.slf4j:slf4j-api' + + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') +} + +sourceSets { + // Make the compileOnly dependencies available when compiling/running tests + test.compileClasspath += configurations.compileOnly + configurations.shadow + test.runtimeClasspath += configurations.compileOnly + configurations.shadow +} + +def on3Digits(version) { + def projectversion3digits = version - ~/-\w+/ + projectversion3digits = projectversion3digits.tokenize('.').plus(0).take(3).join('.') +} + +import org.apache.tools.ant.filters.ReplaceTokens +processResources { + filter ReplaceTokens, tokens: [ + // The build version is composed of 4 fields, including the semantic version and the build number provided by Travis. + 'project.buildVersion': project.version.endsWith('SNAPSHOT') ? project.version : on3Digits(project.version) + '.' + System.getProperty("buildNumber"), + 'project.version.3digits': project.version.endsWith('SNAPSHOT') ? project.version : on3Digits(project.version) + ] +} + +shadowJar { + configurations = [project.configurations.default] + relocate('com.google', 'org.sonar.api.internal.google') + relocate('org.apache.commons', 'org.sonar.api.internal.apachecommons') + dependencies { + exclude(dependency('org.codehaus.woodstox:woodstox-core-lgpl')) + exclude(dependency('org.codehaus.woodstox:stax2-api')) + exclude(dependency('org.codehaus.staxmate:staxmate')) + } +} + +artifactoryPublish.skip = false + +publishing { + publications { + mavenJava(MavenPublication) { + artifact source: shadowJar, classifier: null + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-plugin-api/pom.xml b/sonar-plugin-api/pom.xml deleted file mode 100644 index ab8dc7cef4f..00000000000 --- a/sonar-plugin-api/pom.xml +++ /dev/null @@ -1,282 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-plugin-api</artifactId> - <packaging>jar</packaging> - - <name>SonarQube :: Plugin API</name> - - <properties> - <!-- - version as stored in JAR and displayed in webapp. It is - overridden on Travis when replacing SNAPSHOT version by - build unique version, for instance "6.3.0.12345". - --> - <buildVersion>${project.version}</buildVersion> - - <!-- - a truncated version on three fields is kept for backward-compatibility - with scanners - --> - <buildVersionOnThreeFields>${buildVersion}</buildVersionOnThreeFields> - </properties> - - <dependencies> - - <!-- - The following artifacts are shaded and relocated in an internal package. - They are not visible by plugins - --> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - - <!-- - The following artifacts are shaded but not relocated. They - are provided at runtime, so plugins can use them but - can not change their version. - Long-term target is to remove them from API. They should be - embedded by plugins. - --> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-check-api</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-duplications</artifactId> - <version>${project.version}</version> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </exclusion> - </exclusions> - </dependency> - - <!-- - Transitive dependencies available at runtime. They are not shaded with API - as they are not managed by SonarSource. Versions should not be - overridden by plugins though. - --> - <dependency> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>woodstox-core-lgpl</artifactId> - <exclusions> - <exclusion> - <groupId>stax</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.codehaus.woodstox</groupId> - <artifactId>stax2-api</artifactId> - </dependency> - <dependency> - <groupId>org.codehaus.staxmate</groupId> - <artifactId>staxmate</artifactId> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <optional>true</optional> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <version>3.0.1</version> - <scope>provided</scope> - <optional>true</optional> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <scope>provided</scope> - <optional>true</optional> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <scope>provided</scope> - <optional>true</optional> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>provided</scope> - <optional>true</optional> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <minimizeJar>true</minimizeJar> - <createDependencyReducedPom>true</createDependencyReducedPom> - <artifactSet> - <excludes> - <exclude>org.codehaus.woodstox:woodstox-core-lgpl</exclude> - <exclude>org.codehaus.woodstox:stax2-api</exclude> - <exclude>org.codehaus.staxmate:staxmate</exclude> - </excludes> - </artifactSet> - <filters> - <!-- The following deps are used transitively, so make sure they are not minimized --> - <filter> - <artifact>${project.groupId}:sonar-duplications</artifact> - <includes> - <include>**</include> - </includes> - </filter> - <filter> - <artifact>org.codehaus.sonar:sonar-channel</artifact> - <includes> - <include>**</include> - </includes> - </filter> - <filter> - <artifact>org.sonarsource.sonarqube:sonar-check-api</artifact> - <includes> - <include>**</include> - </includes> - </filter> - </filters> - <relocations> - <relocation> - <pattern>com.google</pattern> - <shadedPattern>org.sonar.api.internal.google</shadedPattern> - </relocation> - <relocation> - <pattern>org.apache.commons</pattern> - <shadedPattern>org.sonar.api.internal.apachecommons</shadedPattern> - </relocation> - </relocations> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <excludes> - <exclude>logback-test.xml</exclude> - </excludes> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>com.github.genthaler</groupId> - <artifactId>beanshell-maven-plugin</artifactId> - <executions> - <execution> - <id>compute-version-on-three-fields</id> - <phase>generate-resources</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <script> - <![CDATA[ - if (! "${buildVersion}".endsWith("-SNAPSHOT")) { - // example: "6.3.0.1234". To be backward-compatible with scanners, only "6.3.0" must be kept - fields = "${buildVersion}".split("\\."); - sj = new StringJoiner("."); - i = 0; - for (String field : fields) { - if (i == 3) { - break; - } - sj.add(field); - ++i; - } - project.getProperties().setProperty("buildVersionOnThreeFields", sj.toString()); - } - ]]> - </script> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - - <resources> - <resource> - <!-- Used to resolve variables in files sq-version.txt and sonar-api-version.txt --> - <directory>src/main/resources</directory> - <filtering>true</filtering> - </resource> - </resources> - </build> - -</project> diff --git a/sonar-plugin-api/src/main/resources/sonar-api-version.txt b/sonar-plugin-api/src/main/resources/sonar-api-version.txt index 6b7ce460f25..d2193c1c60f 100644 --- a/sonar-plugin-api/src/main/resources/sonar-api-version.txt +++ b/sonar-plugin-api/src/main/resources/sonar-api-version.txt @@ -1 +1 @@ -${buildVersion} +@project.buildVersion@
\ No newline at end of file diff --git a/sonar-plugin-api/src/main/resources/sq-version.txt b/sonar-plugin-api/src/main/resources/sq-version.txt index ab8c87a30ad..b3f131da385 100644 --- a/sonar-plugin-api/src/main/resources/sq-version.txt +++ b/sonar-plugin-api/src/main/resources/sq-version.txt @@ -1 +1 @@ -${buildVersionOnThreeFields} +@project.version.3digits@
\ No newline at end of file diff --git a/sonar-scanner-engine-shaded/build.gradle b/sonar-scanner-engine-shaded/build.gradle new file mode 100644 index 00000000000..9d32f9d396c --- /dev/null +++ b/sonar-scanner-engine-shaded/build.gradle @@ -0,0 +1,11 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Scanner Engine Shaded" + } +} + +apply plugin: 'com.github.johnrengelman.shadow' + +dependencies { + compile project(':sonar-scanner-engine') +} diff --git a/sonar-scanner-engine-shaded/pom.xml b/sonar-scanner-engine-shaded/pom.xml deleted file mode 100644 index 2ccd95b2a02..00000000000 --- a/sonar-scanner-engine-shaded/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-scanner-engine-shaded</artifactId> - <name>SonarQube :: Scanner Engine Shaded</name> - <description>All Scanner Engine dependencies in a single jar</description> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-engine</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <id>empty-javadoc-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>javadoc</classifier> - </configuration> - </execution> - <execution> - <id>empty-sources-jar</id> - <phase>package</phase> - <goals> - <goal>jar</goal> - </goals> - <configuration> - <classifier>sources</classifier> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/sonar-scanner-engine/build.gradle b/sonar-scanner-engine/build.gradle new file mode 100644 index 00000000000..e5ee1087be7 --- /dev/null +++ b/sonar-scanner-engine/build.gradle @@ -0,0 +1,63 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Scanner Engine" + } +} + +// Excluding scanner files in order to benefit of incremental build support +sourceSets.test.resources { + exclude '**/.sonar/**' +} + +configurations { + testCompile.extendsFrom(compileOnly) +} + +dependencies { + compile 'commons-codec:commons-codec' + compile 'commons-lang:commons-lang' + compile 'com.google.code.gson:gson' + compile 'com.google.guava:guava' + compile 'org.freemarker:freemarker' + compile 'org.slf4j:jul-to-slf4j' + compile 'org.slf4j:log4j-over-slf4j' + compile 'org.slf4j:slf4j-api' + compile 'org.sonarsource:sonar-persistit' + compile project(':sonar-core') + compile project(':sonar-scanner-protocol') + compile project(':sonar-ws') + compile project(':sonar-home') + compile project(path: ':sonar-plugin-api', configuration: 'shadow') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.tngtech.java:junit-dataprovider' + testCompile 'javax.servlet:javax.servlet-api' + testCompile 'junit:junit' + // Workaround to resolve dependencies of eclipse specific packaging: https://issues.gradle.org/browse/GRADLE-2076 + testCompile module('org.eclipse.jetty:jetty-server') { + dependencies( + "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016@jar", + "org.eclipse.jetty:jetty-continuation:8.1.2.v20120308", + "org.eclipse.jetty:jetty-http:8.1.2.v20120308" + ) + } + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile 'net.javacrumbs.json-unit:json-unit-assertj:0.0.15' + testCompile project(':plugins:sonar-xoo-plugin') + testCompile project(':sonar-plugin-api').sourceSets.test.output +} + +artifactoryPublish.skip = false + +// Used by core plugins +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-scanner-engine/pom.xml b/sonar-scanner-engine/pom.xml deleted file mode 100644 index 622c760e457..00000000000 --- a/sonar-scanner-engine/pom.xml +++ /dev/null @@ -1,165 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-scanner-engine</artifactId> - <name>SonarQube :: Scanner Engine</name> - - <properties> - <enableBenchmarkAssertions>false</enableBenchmarkAssertions> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource</groupId> - <artifactId>sonar-persistit</artifactId> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-scanner-protocol</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-ws</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-home</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jul-to-slf4j</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <!-- For HTML Report --> - <dependency> - <groupId>org.freemarker</groupId> - <artifactId>freemarker</artifactId> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>net.javacrumbs.json-unit</groupId> - <artifactId>json-unit-assertj</artifactId> - <version>0.0.15</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-plugin-api</artifactId> - <type>test-jar</type> - <scope>test</scope> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-xoo-plugin</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>runBenchmarks</id> - <activation> - <property> - <name>runBenchmarks</name> - </property> - </activation> - <properties> - <enableBenchmarkAssertions>true</enableBenchmarkAssertions> - </properties> - </profile> - </profiles> -</project> diff --git a/sonar-scanner-protocol/build.gradle b/sonar-scanner-protocol/build.gradle new file mode 100644 index 00000000000..b852cfa3e16 --- /dev/null +++ b/sonar-scanner-protocol/build.gradle @@ -0,0 +1,34 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Scanner :: Protocol" + property 'sonar.exclusions', 'src/main/java/org/sonar/scanner/protocol/viewer/**' + } +} + +dependencies { + compile 'commons-io:commons-io' + compile 'com.google.code.gson:gson' + compile 'com.google.protobuf:protobuf-java' + compile 'net.jpountz.lz4:lz4' + compile project(':sonar-core') + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'com.google.guava:guava' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile 'net.javacrumbs.json-unit:json-unit-assertj:0.0.15' +} + +// Used by sonar-db-core to run DB Unit Tests +artifactoryPublish.skip = false +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-scanner-protocol/pom.xml b/sonar-scanner-protocol/pom.xml deleted file mode 100644 index 82d52b7179e..00000000000 --- a/sonar-scanner-protocol/pom.xml +++ /dev/null @@ -1,104 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-scanner-protocol</artifactId> - <name>SonarQube :: Scanner :: Protocol</name> - - <description>Classes used for communication between scanner and server</description> - - <properties> - <!-- Viewer is for our internal use. This is not production code and mostly generated with Eclipse GUI builder --> - <sonar.exclusions>target/generated-sources/**/*,src/main/java/org/sonar/scanner/protocol/viewer/**</sonar.exclusions> - <sonar.test.exclusions>target/generated-test-sources/**/*</sonar.test.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>net.jpountz.lz4</groupId> - <artifactId>lz4</artifactId> - </dependency> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-core</artifactId> - </dependency> - - <!-- unit tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>net.javacrumbs.json-unit</groupId> - <artifactId>json-unit-assertj</artifactId> - <version>0.0.15</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <finalName>scanner-report-viewer-${project.version}</finalName> - <archive> - <manifest> - <mainClass>org.sonar.scanner.protocol.viewer.ScannerReportViewerApp</mainClass> - </manifest> - </archive> - <descriptors> - <descriptor>src/main/assembly/viewer.xml</descriptor> - </descriptors> - </configuration> - <executions> - <execution> - <id>make-assembly</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/sonar-testing-harness/build.gradle b/sonar-testing-harness/build.gradle new file mode 100644 index 00000000000..3908c075238 --- /dev/null +++ b/sonar-testing-harness/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Testing Harness" + } +} + +dependencies { + compile 'commons-io:commons-io' + compile 'com.googlecode.json-simple:json-simple' + compile 'com.google.code.gson:gson' + compile 'junit:junit' + compile 'org.hamcrest:hamcrest-core' + + compileOnly 'com.google.code.findbugs:jsr305' + + testCompile 'org.assertj:assertj-core' +} + +// Used by sonar-db-core to run DB Unit Tests +artifactoryPublish.skip = false +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-testing-harness/pom.xml b/sonar-testing-harness/pom.xml deleted file mode 100644 index 3b776e847eb..00000000000 --- a/sonar-testing-harness/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - <artifactId>sonar-testing-harness</artifactId> - <packaging>jar</packaging> - <name>SonarQube :: Testing Harness</name> - - <dependencies> - <dependency> - <groupId>com.googlecode.json-simple</groupId> - <artifactId>json-simple</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> diff --git a/sonar-testing-harness/src/main/java/org/sonar/test/i18n/BundleSynchronizedMatcher.java b/sonar-testing-harness/src/main/java/org/sonar/test/i18n/BundleSynchronizedMatcher.java index 00e6e6096a0..ec7aa2c2a81 100644 --- a/sonar-testing-harness/src/main/java/org/sonar/test/i18n/BundleSynchronizedMatcher.java +++ b/sonar-testing-harness/src/main/java/org/sonar/test/i18n/BundleSynchronizedMatcher.java @@ -83,7 +83,7 @@ public class BundleSynchronizedMatcher extends BaseMatcher<String> { @Override public void describeTo(Description description) { // report file - File dumpFile = new File("target/l10n/" + bundleName + ".report.txt"); + File dumpFile = new File("build/l10n/" + bundleName + ".report.txt"); // prepare message StringBuilder details = prepareDetailsMessage(dumpFile); diff --git a/sonar-ws-generator/build.gradle b/sonar-ws-generator/build.gradle new file mode 100644 index 00000000000..01c9b640ea6 --- /dev/null +++ b/sonar-ws-generator/build.gradle @@ -0,0 +1,23 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.code.gson:gson:2.8.2' + compile 'com.google.guava:guava' + compile 'org.apache.velocity:velocity:1.7' + compile 'org.slf4j:log4j-over-slf4j' + compile 'org.sonarsource.orchestrator:sonar-orchestrator' + compile project(':sonar-ws') + + compileOnly 'com.google.code.findbugs:jsr305' +} + +task fatJar(type: Jar) { + manifest { + attributes 'Main-Class': 'org.sonarqube.wsgenerator.Generator' + } + classifier = 'jar-with-dependencies' + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + with jar +} diff --git a/sonar-ws-generator/pom.xml b/sonar-ws-generator/pom.xml deleted file mode 100644 index 80a7bc25329..00000000000 --- a/sonar-ws-generator/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-ws-generator</artifactId> - <name>SonarQube :: Web Service :: Generator</name> - <description>Generate source files of sonar-ws</description> - - <properties> - <sonar.exclusions>src/**/*</sonar.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.velocity</groupId> - <artifactId>velocity</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - <version>1.7.25</version> - </dependency> - <dependency> - <groupId>org.sonarsource.orchestrator</groupId> - <artifactId>sonar-orchestrator</artifactId> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-ws</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.2</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - </dependencies> - - <profiles> - <profile> - <id>run-ws-generator</id> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <id>assemble-all</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - <configuration> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - <archive> - <manifest> - <mainClass>org.sonarqube.wsgenerator.Generator</mainClass> - </manifest> - </archive> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - -</project> diff --git a/sonar-ws-generator/run.sh b/sonar-ws-generator/run.sh index f785bcb4032..ddc5a73bc82 100755 --- a/sonar-ws-generator/run.sh +++ b/sonar-ws-generator/run.sh @@ -3,7 +3,9 @@ set -euo pipefail SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" -cd $SCRIPTPATH -mvn clean package -Prun-ws-generator -java -jar target/sonar-ws-generator-*-SNAPSHOT-jar-with-dependencies.jar -cp -R target/generated-sources/results/org/sonarqube/ws/client/* ../sonar-ws/src/main/java/org/sonarqube/ws/client +pushd $SCRIPTPATH/.. +pwd +./gradlew :sonar-ws-generator:build :sonar-ws-generator:fatJar +popd +java -jar build/libs/sonar-ws-generator-*-SNAPSHOT-jar-with-dependencies.jar +cp -R build/generated-sources/results/org/sonarqube/ws/client/* ../sonar-ws/src/main/java/org/sonarqube/ws/client diff --git a/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/ApiDefinitionDownloader.java b/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/ApiDefinitionDownloader.java index 29e210241fa..8c232851c21 100644 --- a/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/ApiDefinitionDownloader.java +++ b/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/ApiDefinitionDownloader.java @@ -20,6 +20,7 @@ package org.sonarqube.wsgenerator; import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.OrchestratorBuilder; import com.sonar.orchestrator.http.HttpCall; import com.sonar.orchestrator.http.HttpResponse; import com.sonar.orchestrator.locator.FileLocation; @@ -32,10 +33,10 @@ public class ApiDefinitionDownloader { } public static String downloadApiDefinition() { - Orchestrator orchestrator = Orchestrator - .builderEnv() - .setZipFile(FileLocation.byWildcardMavenFilename(new File("../sonar-application/target"), "sonarqube-*.zip").getFile()) - .build(); + OrchestratorBuilder builder = Orchestrator.builderEnv(); + builder.setZipFile(FileLocation.byWildcardMavenFilename(new File("../sonar-application/build/distributions"), "sonar-application-*.zip").getFile()) + .setOrchestratorProperty("orchestrator.workspaceDir", "build"); + Orchestrator orchestrator = builder.build(); orchestrator.start(); try { diff --git a/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/Helper.java b/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/Helper.java index f76decd69a6..0d12506fd38 100644 --- a/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/Helper.java +++ b/sonar-ws-generator/src/main/java/org/sonarqube/wsgenerator/Helper.java @@ -37,7 +37,7 @@ import static java.util.Arrays.asList; public class Helper { static final Set<String> PATH_EXCLUSIONS = new HashSet<>(asList("api/orchestrator")); - private static final String OUTPUT_DIR = "target/generated-sources/results"; + private static final String OUTPUT_DIR = "build/generated-sources/results"; private final Map<String, List<String[]>> responseTypes; public Helper() { diff --git a/sonar-ws/build.gradle b/sonar-ws/build.gradle new file mode 100644 index 00000000000..5695a5a774d --- /dev/null +++ b/sonar-ws/build.gradle @@ -0,0 +1,39 @@ +sonarqube { + properties { + property 'sonar.projectName', "${projectTitle} :: Web Service" + property 'sonar.exclusions', 'src/main/java/org/sonarqube/ws/client/*/*.java' + } +} + +configurations { + testCompile.extendsFrom(compileOnly) +} + +dependencies { + compile 'commons-io:commons-io' + compile 'com.google.guava:guava' + compile 'com.google.protobuf:protobuf-java' + compile 'com.squareup.okhttp3:okhttp' + + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + + testCompile 'commons-lang:commons-lang' + testCompile 'com.squareup.okhttp3:mockwebserver' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.mockito:mockito-core' + testCompile project(':sonar-testing-harness') +} + +artifactoryPublish.skip = false + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } + } +} diff --git a/sonar-ws/pom.xml b/sonar-ws/pom.xml deleted file mode 100644 index ba4a480ae05..00000000000 --- a/sonar-ws/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-ws</artifactId> - <name>SonarQube :: Web Service</name> - <description>Protocol Buffers specification of Web Services</description> - - <properties> - <sonar.exclusions>target/generated-sources/**/*,src/main/java/org/sonarqube/ws/client/*/*.java</sonar.exclusions> - <sonar.test.exclusions>target/generated-test-sources/**/*,src/test/java/org/sonarqube/ws/client/*/*.java</sonar.test.exclusions> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>okhttp</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - <optional>true</optional> - </dependency> - - <!-- Tests --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sonar-testing-harness</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>mockwebserver</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> @@ -8,7 +8,7 @@ else OS='linux-x86-64' fi -SONAR_SH=sonar-application/target/sonarqube-*/bin/$OS/sonar.sh +SONAR_SH=sonar-application/build/distributions/sonarqube-*/bin/$OS/sonar.sh if [ -f $SONAR_SH ]; then sh $SONAR_SH stop fi diff --git a/tests/build.gradle b/tests/build.gradle new file mode 100644 index 00000000000..3f4d6d8c61e --- /dev/null +++ b/tests/build.gradle @@ -0,0 +1,149 @@ +ext { + jettyVersion = '9.3.11.v20160721' + bytemanVersion = '3.0.10' +} + +configurations { + sqZip + includeInTestResources +} + +def pluginsForITs = [ + ':plugins:sonar-xoo-plugin', + ':tests:plugins:access-secured-props-plugin', + ':tests:plugins:base-auth-plugin', + ':tests:plugins:batch-plugin', + ':tests:plugins:extension-lifecycle-plugin', + ':tests:plugins:fake-billing-plugin', + ':tests:plugins:fake-governance-plugin', + ':tests:plugins:foo-plugin-v1', + ':tests:plugins:foo-plugin-v2', + ':tests:plugins:global-property-change-plugin', + ':tests:plugins:issue-filter-plugin', + ':tests:plugins:l10n-fr-pack', + ':tests:plugins:license-plugin', + ':tests:plugins:oauth2-auth-plugin', + ':tests:plugins:project-builder-plugin', + ':tests:plugins:property-relocation-plugin', + ':tests:plugins:property-sets-plugin', + ':tests:plugins:security-plugin', + ':tests:plugins:server-plugin', + ':tests:plugins:settings-encryption-plugin', + ':tests:plugins:settings-plugin', + ':tests:plugins:sonar-fake-plugin', + ':tests:plugins:sonar-subcategories-plugin', + ':tests:plugins:ui-extensions-plugin', + ':tests:plugins:posttask-plugin', + ':tests:plugins:wait-at-platform-level4-plugin', + ':tests:plugins:ws-plugin', + ':tests:plugins:backdating-plugin-v1', + ':tests:plugins:backdating-plugin-v2', + ':tests:plugins:backdating-customplugin' +] + +dependencies { + testCompile 'org.sonarsource.orchestrator:sonar-orchestrator' + testCompile project(':server:sonar-qa-util') + testCompile project(':sonar-ws') + // required version 23.0 for selenide + testCompile 'com.google.guava:guava:23.0' + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' + testCompile 'org.assertj:assertj-guava' + testCompile 'com.googlecode.json-simple:json-simple' + testCompile 'org.skyscreamer:jsonassert:1.2.0' + testCompile 'com.squareup.okhttp3:mockwebserver' + testCompile 'org.subethamail:subethasmtp' + testCompile "org.eclipse.jetty:jetty-server:${jettyVersion}" + testCompile "org.eclipse.jetty:jetty-servlet:${jettyVersion}" + testCompile "org.eclipse.jetty:jetty-proxy:${jettyVersion}" + testCompile "org.jboss.byteman:byteman-submit:${bytemanVersion}" + testCompile 'com.microsoft.sqlserver:mssql-jdbc' + testCompile 'mysql:mysql-connector-java' + testCompile 'org.postgresql:postgresql' + testCompile 'com.oracle.jdbc:ojdbc8' + + includeInTestResources "org.jboss.byteman:byteman:${bytemanVersion}" +} + +sonarqube { + skipProject = true +} + +//UT are excluding in order for ITs to only run when needed +test{ + exclude '*' +} + +task integrationTest(type: Test) { + description = 'Runs integration tests' + + for (plugin in pluginsForITs) { + dependsOn project(plugin).assemble + } + + jacoco.enabled = false + + systemProperty 'orchestrator.configUrl', System.getProperty('orchestrator.configUrl') + systemProperty 'orchestrator.artifactory.apiKey', System.getProperty('orchestrator.artifactory.apiKey') + systemProperty 'orchestrator.artifactory.repositories', System.getProperty('orchestrator.artifactory.repositories') + if (project.hasProperty('cix')) { + systemProperty 'sonar.runtimeVersion', version + } + + def category = System.getProperty('category') + filter { + switch (category) { + case 'Lite': + includeTestsMatching 'org.sonarqube.tests.lite.*Suite' + break + case 'Category1': + includeTestsMatching 'org.sonarqube.tests.Category1Suite' + includeTestsMatching 'org.sonarqube.tests.authorization.*Suite' + includeTestsMatching 'org.sonarqube.tests.measure.*Suite' + includeTestsMatching 'org.sonarqube.tests.qualityGate.*Suite' + includeTestsMatching 'org.sonarqube.tests.source.*Suite' + break + case 'Category2': + includeTestsMatching 'org.sonarqube.tests.issue.*Suite' + includeTestsMatching 'org.sonarqube.tests.test.*Suite' + includeTestsMatching 'org.sonarqube.tests.qualityModel.*Suite' + break + case 'Category3': + includeTestsMatching 'org.sonarqube.tests.Category3Suite' + includeTestsMatching 'org.sonarqube.tests.component.*Suite' + includeTestsMatching 'org.sonarqube.tests.project.*Suite' + break + case 'Category4': + includeTestsMatching 'org.sonarqube.tests.Category4Suite' + includeTestsMatching 'org.sonarqube.tests.duplication.*Suite' + includeTestsMatching 'org.sonarqube.tests.user.*Suite' + includeTestsMatching 'org.sonarqube.tests.webhook.*Suite' + break + case 'Category5': + includeTestsMatching 'org.sonarqube.tests.Category5Suite' + break + case 'Category6': + includeTestsMatching 'org.sonarqube.tests.Category6Suite' + includeTestsMatching 'org.sonarqube.tests.organization.*Suite' + break + case 'Plugins': + includeTestsMatching 'org.sonarqube.tests.plugins.PluginsSuite' + break + case 'Upgrade': + includeTestsMatching 'org.sonarqube.tests.upgrade.UpgradeSuite' + break + case 'ServerPerformance': + includeTestsMatching 'org.sonarqube.tests.performance.server.ServerPerformanceSuite' + break + } + } +} + +processTestResources() { + into('/') { + from configurations.includeInTestResources + // TODO cache not invalidated when pattern changes? + rename '(.*)-' + bytemanVersion + '.jar', '$1.jar' + } +} diff --git a/tests/plugins/access-secured-props-plugin/build.gradle b/tests/plugins/access-secured-props-plugin/build.gradle new file mode 100644 index 00000000000..b41c78ff478 --- /dev/null +++ b/tests/plugins/access-secured-props-plugin/build.gradle @@ -0,0 +1,19 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'AccessSecuredPropsPlugin', + 'Plugin-Version': '1.0.2.42', + 'Plugin-Display-Version': '1.0.2 (build 42)', + 'Plugin-Class': 'AccessSecuredPropsPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Access Secured PropertiesFoo', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/access-secured-props-plugin/pom.xml b/tests/plugins/access-secured-props-plugin/pom.xml deleted file mode 100644 index 55fe1f96b98..00000000000 --- a/tests/plugins/access-secured-props-plugin/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>access-secured-props-plugin</artifactId> - <packaging>sonar-plugin</packaging> - <name>Plugins :: Access Secured Properties</name> - <version>1.0.2.42</version> - <description>Access .secured properties</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.18.0.372</version> - <extensions>true</extensions> - <configuration> - <pluginClass>AccessSecuredPropsPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/backdating-customplugin/build.gradle b/tests/plugins/backdating-customplugin/build.gradle new file mode 100644 index 00000000000..1e047a85029 --- /dev/null +++ b/tests/plugins/backdating-customplugin/build.gradle @@ -0,0 +1,31 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly project(':tests:plugins:backdating-plugin-v1') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'custombackdating', + 'Plugin-Version': version, + 'Plugin-Class': 'org.sonar.backdating.custom.BackdatingPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Custom', + 'Plugin-License': 'GNU LGPL 3', + 'Plugin-Base': 'backdating' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/backdating-customplugin/pom.xml b/tests/plugins/backdating-customplugin/pom.xml deleted file mode 100644 index 2072ab6b84b..00000000000 --- a/tests/plugins/backdating-customplugin/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>backdating-customplugin</artifactId> - <name>SonarQube :: Plugins :: Backdating (custom)</name> - <packaging>sonar-plugin</packaging> - <description>Sample of custom rule plugin to test issue backdating</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>backdating-plugin-v1</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>custombackdating</pluginKey> - <pluginName>Custom</pluginName> - <basePlugin>backdating</basePlugin> - <pluginClass>org.sonar.backdating.custom.BackdatingPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/backdating-plugin-v1/build.gradle b/tests/plugins/backdating-plugin-v1/build.gradle new file mode 100644 index 00000000000..8ef8bb8177d --- /dev/null +++ b/tests/plugins/backdating-plugin-v1/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'backdating', + 'Plugin-Version': version, + 'Plugin-Class': 'org.sonar.plugins.backdating.BackdatingPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Foo', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/backdating-plugin-v1/pom.xml b/tests/plugins/backdating-plugin-v1/pom.xml deleted file mode 100644 index f1f567bc73f..00000000000 --- a/tests/plugins/backdating-plugin-v1/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>backdating-plugin-v1</artifactId> - <name>SonarQube :: Plugins :: Backdating (V1)</name> - <packaging>sonar-plugin</packaging> - <description>Sample of plugin to test issue backdating</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>backdating</pluginKey> - <pluginName>Foo</pluginName> - <pluginClass>org.sonar.plugins.backdating.BackdatingPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/backdating-plugin-v2/build.gradle b/tests/plugins/backdating-plugin-v2/build.gradle new file mode 100644 index 00000000000..202d2bbeebc --- /dev/null +++ b/tests/plugins/backdating-plugin-v2/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly 'com.google.code.findbugs:jsr305' +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'backdating', + 'Plugin-Version': version, + 'Plugin-Class': 'org.sonar.plugins.backdating.BackdatingPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Foo', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/backdating-plugin-v2/pom.xml b/tests/plugins/backdating-plugin-v2/pom.xml deleted file mode 100644 index fefc6bba2fd..00000000000 --- a/tests/plugins/backdating-plugin-v2/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>backdating-plugin-v2</artifactId> - <name>SonarQube :: Plugins :: Backdating (V2)</name> - <packaging>sonar-plugin</packaging> - <description>Sample of plugin to test issue backdating</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>backdating</pluginKey> - <pluginName>Foo</pluginName> - <pluginClass>org.sonar.plugins.backdating.BackdatingPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/base-auth-plugin/build.gradle b/tests/plugins/base-auth-plugin/build.gradle new file mode 100644 index 00000000000..ee1c6490082 --- /dev/null +++ b/tests/plugins/base-auth-plugin/build.gradle @@ -0,0 +1,25 @@ +dependencies { + compile('com.google.guava:guava:17.0') { + exclude group: 'com.google.code.findbugs', module: 'jsr305' + } + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly 'javax.servlet:javax.servlet-api:3.0.1' +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'baseauthplugin', + 'Plugin-Version': version, + 'Plugin-Class': 'FakeBaseAuthPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Fake Base Authentication Plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/base-auth-plugin/pom.xml b/tests/plugins/base-auth-plugin/pom.xml deleted file mode 100644 index 7b2555b98f8..00000000000 --- a/tests/plugins/base-auth-plugin/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>base-auth-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>Plugins :: Fake Base Authentication Plugin</name> - <description>Test for base authentication plugin (like openid)</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <version>3.0.1</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>17.0</version> - <exclusions> - <exclusion> - <!-- should be declared with scope provided --> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <configuration> - <pluginClass>FakeBaseAuthPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/batch-plugin/build.gradle b/tests/plugins/batch-plugin/build.gradle new file mode 100644 index 00000000000..e21395aa1be --- /dev/null +++ b/tests/plugins/batch-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'batch-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'com.sonarsource.BatchPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'SonarQube Integration Tests :: Plugins :: Batch', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/batch-plugin/pom.xml b/tests/plugins/batch-plugin/pom.xml deleted file mode 100644 index 4bd7041393a..00000000000 --- a/tests/plugins/batch-plugin/pom.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>batch-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>SonarQube Integration Tests :: Plugins :: Batch</name> - <description>Main plugin for batch tests</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <pluginClass>com.sonarsource.BatchPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/extension-lifecycle-plugin/build.gradle b/tests/plugins/extension-lifecycle-plugin/build.gradle new file mode 100644 index 00000000000..92d5faefce3 --- /dev/null +++ b/tests/plugins/extension-lifecycle-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'extension-lifecycle-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'ExtensionLifecyclePlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Extension Lifecycle', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/extension-lifecycle-plugin/pom.xml b/tests/plugins/extension-lifecycle-plugin/pom.xml deleted file mode 100644 index 73e6a088a4e..00000000000 --- a/tests/plugins/extension-lifecycle-plugin/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - <artifactId>extension-lifecycle-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Extension Lifecycle</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>ExtensionLifecyclePlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/fake-billing-plugin/build.gradle b/tests/plugins/fake-billing-plugin/build.gradle new file mode 100644 index 00000000000..fe1303c5633 --- /dev/null +++ b/tests/plugins/fake-billing-plugin/build.gradle @@ -0,0 +1,19 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly project(':server:sonar-server') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'billing', + 'Plugin-Version': version, + 'Plugin-Class': 'FakeBillingPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Fake Billing Plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/fake-billing-plugin/pom.xml b/tests/plugins/fake-billing-plugin/pom.xml deleted file mode 100644 index a5430e50a1a..00000000000 --- a/tests/plugins/fake-billing-plugin/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>fake-billing-plugin</artifactId> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Fake Billing Plugin</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-server</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>FakeBillingPlugin</pluginClass> - <pluginKey>billing</pluginKey> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/fake-governance-plugin/build.gradle b/tests/plugins/fake-governance-plugin/build.gradle new file mode 100644 index 00000000000..225751ba344 --- /dev/null +++ b/tests/plugins/fake-governance-plugin/build.gradle @@ -0,0 +1,19 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly project(':server:sonar-server') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'governance', + 'Plugin-Version': version, + 'Plugin-Class': 'FakeGovernancePlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Fake Governance Plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/fake-governance-plugin/pom.xml b/tests/plugins/fake-governance-plugin/pom.xml deleted file mode 100644 index 1442c73d770..00000000000 --- a/tests/plugins/fake-governance-plugin/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>fake-governance-plugin</artifactId> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Fake Governance Plugin</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-server</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>FakeGovernancePlugin</pluginClass> - <pluginKey>governance</pluginKey> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/foo-plugin-v1/build.gradle b/tests/plugins/foo-plugin-v1/build.gradle new file mode 100644 index 00000000000..c768ae45a98 --- /dev/null +++ b/tests/plugins/foo-plugin-v1/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'foo', + 'Plugin-Version': version, + 'Plugin-Class': 'org.sonar.foo.FooPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Foo', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/foo-plugin-v1/pom.xml b/tests/plugins/foo-plugin-v1/pom.xml deleted file mode 100644 index ce6bec89282..00000000000 --- a/tests/plugins/foo-plugin-v1/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>foo-plugin-v1</artifactId> - <name>SonarQube :: Plugins :: Foo (V1)</name> - <packaging>sonar-plugin</packaging> - <description>Sample of plugin to document and test available APIs</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>foo</pluginKey> - <pluginName>Foo</pluginName> - <pluginClass>org.sonar.foo.FooPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/foo-plugin-v2/build.gradle b/tests/plugins/foo-plugin-v2/build.gradle new file mode 100644 index 00000000000..c768ae45a98 --- /dev/null +++ b/tests/plugins/foo-plugin-v2/build.gradle @@ -0,0 +1,29 @@ +sonarqube { + skipProject = true +} + +dependencies { + compile 'com.google.guava:guava' + compile 'commons-io:commons-io' + compile 'commons-lang:commons-lang' + compileOnly 'com.google.code.findbugs:jsr305' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'foo', + 'Plugin-Version': version, + 'Plugin-Class': 'org.sonar.foo.FooPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Foo', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/foo-plugin-v2/pom.xml b/tests/plugins/foo-plugin-v2/pom.xml deleted file mode 100644 index 1bd47c6e5c7..00000000000 --- a/tests/plugins/foo-plugin-v2/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../..</relativePath> - </parent> - <artifactId>foo-plugin-v2</artifactId> - <name>SonarQube :: Plugins :: Foo (V2)</name> - <packaging>sonar-plugin</packaging> - <description>Sample of plugin to document and test available APIs</description> - - <properties> - <sonar.skip>true</sonar.skip> - </properties> - - <dependencies> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- unit testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <configuration> - <pluginKey>foo</pluginKey> - <pluginName>Foo</pluginName> - <pluginClass>org.sonar.foo.FooPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/global-property-change-plugin/build.gradle b/tests/plugins/global-property-change-plugin/build.gradle new file mode 100644 index 00000000000..6832540b178 --- /dev/null +++ b/tests/plugins/global-property-change-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'global-property-change-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'GlobalPropertyChangePlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Plugins :: Global Property Change', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/global-property-change-plugin/pom.xml b/tests/plugins/global-property-change-plugin/pom.xml deleted file mode 100644 index c906feaf2af..00000000000 --- a/tests/plugins/global-property-change-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>global-property-change-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Global Property Change</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>GlobalPropertyChangePlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/issue-filter-plugin/build.gradle b/tests/plugins/issue-filter-plugin/build.gradle new file mode 100644 index 00000000000..63fe9a1d629 --- /dev/null +++ b/tests/plugins/issue-filter-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'issue-filter-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'IssueFilterPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'IT :: Issue Filter', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/issue-filter-plugin/pom.xml b/tests/plugins/issue-filter-plugin/pom.xml deleted file mode 100644 index 6027229a423..00000000000 --- a/tests/plugins/issue-filter-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>issue-filter-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>IT :: Issue Filter</name> - <description>IT :: Issue Filter</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>IssueFilterPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/l10n-fr-pack/build.gradle b/tests/plugins/l10n-fr-pack/build.gradle new file mode 100644 index 00000000000..0e528ef2cf1 --- /dev/null +++ b/tests/plugins/l10n-fr-pack/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'l10n-fr-pack', + 'Plugin-Version': version, + 'Plugin-Class': 'SimpleFrenchPackPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'l10n-fr-pack', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/l10n-fr-pack/pom.xml b/tests/plugins/l10n-fr-pack/pom.xml deleted file mode 100644 index 59f84aaedbe..00000000000 --- a/tests/plugins/l10n-fr-pack/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>l10n-fr-pack</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>IT :: Simple French Language Pack</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <basePlugin>l10nen</basePlugin> - <pluginClass>SimpleFrenchPackPlugin</pluginClass> - </configuration> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>native2ascii-maven-plugin</artifactId> - <version>1.0-beta-1</version> - <executions> - <execution> - <goals> - <goal>native2ascii</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/license-plugin/build.gradle b/tests/plugins/license-plugin/build.gradle new file mode 100644 index 00000000000..8ec6c368508 --- /dev/null +++ b/tests/plugins/license-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'license-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'LicensePlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'license-plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/license-plugin/pom.xml b/tests/plugins/license-plugin/pom.xml deleted file mode 100644 index a3754d95edc..00000000000 --- a/tests/plugins/license-plugin/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>license-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: License</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>LicensePlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/oauth2-auth-plugin/build.gradle b/tests/plugins/oauth2-auth-plugin/build.gradle new file mode 100644 index 00000000000..f0d08a98294 --- /dev/null +++ b/tests/plugins/oauth2-auth-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'oauth2-auth-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'FakeOAuth2AuthPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Fake OAuth2 Authentication Plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/oauth2-auth-plugin/pom.xml b/tests/plugins/oauth2-auth-plugin/pom.xml deleted file mode 100644 index 700b6354589..00000000000 --- a/tests/plugins/oauth2-auth-plugin/pom.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>oauth2-auth-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>Plugins :: Fake OAuth2 Authentication Plugin</name> - <description>Test for OAuth2 authentication plugin (like openid)</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <version>3.0.1</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <configuration> - <pluginClass>FakeOAuth2AuthPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/pom.xml b/tests/plugins/pom.xml deleted file mode 100644 index fb1746c1363..00000000000 --- a/tests/plugins/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - <relativePath>../../pom.xml</relativePath> - </parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <name>SonarQube Integration Tests :: Plugins</name> - <description>The fake plugins used by integration tests</description> - <packaging>pom</packaging> - - <properties> - <skipSanityChecks>true</skipSanityChecks> - <enforcer.skip>true</enforcer.skip> - <maven.deploy.skip>true</maven.deploy.skip> - <source.skip>true</source.skip> - <apiVersion>${project.parent.version}</apiVersion> - </properties> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <skip>true</skip> - </configuration> - </plugin> - </plugins> - </build> - - <modules> - <module>access-secured-props-plugin</module> - <module>base-auth-plugin</module> - <module>batch-plugin</module> - <module>extension-lifecycle-plugin</module> - <module>fake-billing-plugin</module> - <module>fake-governance-plugin</module> - <module>foo-plugin-v1</module> - <module>foo-plugin-v2</module> - <module>global-property-change-plugin</module> - <module>issue-filter-plugin</module> - <module>l10n-fr-pack</module> - <module>license-plugin</module> - <module>oauth2-auth-plugin</module> - <module>project-builder-plugin</module> - <module>property-relocation-plugin</module> - <module>property-sets-plugin</module> - <module>security-plugin</module> - <module>server-plugin</module> - <module>settings-encryption-plugin</module> - <module>settings-plugin</module> - <module>sonar-fake-plugin</module> - <module>sonar-subcategories-plugin</module> - <module>ui-extensions-plugin</module> - <module>posttask-plugin</module> - <module>wait-at-platform-level4-plugin</module> - <module>ws-plugin</module> - <module>backdating-plugin-v1</module> - <module>backdating-plugin-v2</module> - <module>backdating-customplugin</module> - </modules> -</project> diff --git a/tests/plugins/posttask-plugin/build.gradle b/tests/plugins/posttask-plugin/build.gradle new file mode 100644 index 00000000000..da9560a10dd --- /dev/null +++ b/tests/plugins/posttask-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'posttask-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'PostTaskPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'SonarQube Integration Tests :: Plugins :: PostTask', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/posttask-plugin/pom.xml b/tests/plugins/posttask-plugin/pom.xml deleted file mode 100644 index 6b1dbe398d4..00000000000 --- a/tests/plugins/posttask-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>posttask-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>SonarQube Integration Tests :: Plugins :: PostTask</name> - <description>Plugin testing the Compute Engine Post Task API</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>PostTaskPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/project-builder-plugin/build.gradle b/tests/plugins/project-builder-plugin/build.gradle new file mode 100644 index 00000000000..ca035179e9a --- /dev/null +++ b/tests/plugins/project-builder-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'project-builder-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'ProjectBuilderPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Project Builder', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/project-builder-plugin/pom.xml b/tests/plugins/project-builder-plugin/pom.xml deleted file mode 100644 index 98ed082222d..00000000000 --- a/tests/plugins/project-builder-plugin/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - <artifactId>project-builder-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Project Builder</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>ProjectBuilderPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/property-relocation-plugin/build.gradle b/tests/plugins/property-relocation-plugin/build.gradle new file mode 100644 index 00000000000..14ed5d44966 --- /dev/null +++ b/tests/plugins/property-relocation-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'property-relocation-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'PropertyRelocationPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'property-relocation-plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/property-relocation-plugin/pom.xml b/tests/plugins/property-relocation-plugin/pom.xml deleted file mode 100644 index a5915c85909..00000000000 --- a/tests/plugins/property-relocation-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>property-relocation-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Property Relocation</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>PropertyRelocationPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/property-sets-plugin/build.gradle b/tests/plugins/property-sets-plugin/build.gradle new file mode 100644 index 00000000000..6ce9d77d5ee --- /dev/null +++ b/tests/plugins/property-sets-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'property-sets-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'PropertySetsPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'property-sets-plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/property-sets-plugin/pom.xml b/tests/plugins/property-sets-plugin/pom.xml deleted file mode 100644 index c8081a72fa1..00000000000 --- a/tests/plugins/property-sets-plugin/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>property-sets-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Property Sets</description> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>PropertySetsPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/security-plugin/build.gradle b/tests/plugins/security-plugin/build.gradle new file mode 100644 index 00000000000..cfd4d2bbe0f --- /dev/null +++ b/tests/plugins/security-plugin/build.gradle @@ -0,0 +1,29 @@ +configurations { + testCompile.extendsFrom(compileOnly) +} + +dependencies { + compile 'commons-lang:commons-lang' + compile 'com.google.guava:guava' + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + testCompile 'junit:junit' + testCompile 'org.assertj:assertj-core' +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'security-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'SecurityPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'security-plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/security-plugin/pom.xml b/tests/plugins/security-plugin/pom.xml deleted file mode 100644 index 5664abd0c66..00000000000 --- a/tests/plugins/security-plugin/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>security-plugin</artifactId> - <packaging>sonar-plugin</packaging> - <version>1.0-SNAPSHOT</version> - <description>Plugins :: Security</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>2.0.0</version> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - <version>1.3.1</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>SecurityPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/tests/plugins/server-plugin/build.gradle b/tests/plugins/server-plugin/build.gradle new file mode 100644 index 00000000000..685e50ec050 --- /dev/null +++ b/tests/plugins/server-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'server-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'ServerPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'SonarQube Integration Tests :: Plugins :: Server', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/server-plugin/pom.xml b/tests/plugins/server-plugin/pom.xml deleted file mode 100644 index ea012d4ab81..00000000000 --- a/tests/plugins/server-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>server-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>SonarQube Integration Tests :: Plugins :: Server</name> - <description>Main plugin for Server tests</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>ServerPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/settings-encryption-plugin/build.gradle b/tests/plugins/settings-encryption-plugin/build.gradle new file mode 100644 index 00000000000..c7fb784e794 --- /dev/null +++ b/tests/plugins/settings-encryption-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'settings-encryption-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'SettingsEncryptionPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'settings-encryption-plugin', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/settings-encryption-plugin/pom.xml b/tests/plugins/settings-encryption-plugin/pom.xml deleted file mode 100644 index c3395957065..00000000000 --- a/tests/plugins/settings-encryption-plugin/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - <artifactId>settings-encryption-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Settings Encryption</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>SettingsEncryptionPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/settings-plugin/build.gradle b/tests/plugins/settings-plugin/build.gradle new file mode 100644 index 00000000000..44489319a50 --- /dev/null +++ b/tests/plugins/settings-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'settings-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'SettingsPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Settings', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/settings-plugin/pom.xml b/tests/plugins/settings-plugin/pom.xml deleted file mode 100644 index db0bb95516a..00000000000 --- a/tests/plugins/settings-plugin/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>settings-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <description>Plugins :: Settings</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>SettingsPlugin</pluginClass> - <pluginName>Settings</pluginName> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/sonar-fake-plugin/build.gradle b/tests/plugins/sonar-fake-plugin/build.gradle new file mode 100644 index 00000000000..0696ae95234 --- /dev/null +++ b/tests/plugins/sonar-fake-plugin/build.gradle @@ -0,0 +1,19 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'fake', + 'Plugin-Version': version, + 'Plugin-Class': 'FakePlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Fake', + 'Plugin-License': 'GNU LGPL 3', + 'Plugin-Organization': 'SonarSource' + ) + } +} diff --git a/tests/plugins/sonar-fake-plugin/pom.xml b/tests/plugins/sonar-fake-plugin/pom.xml deleted file mode 100644 index d0945e97d09..00000000000 --- a/tests/plugins/sonar-fake-plugin/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-fake-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>Plugins :: Fake</name> - <description>SonarQube Integration Tests :: Fake Plugin</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <configuration> - <pluginClass>FakePlugin</pluginClass> - <pluginKey>fake</pluginKey> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/sonar-subcategories-plugin/build.gradle b/tests/plugins/sonar-subcategories-plugin/build.gradle new file mode 100644 index 00000000000..53ad942de98 --- /dev/null +++ b/tests/plugins/sonar-subcategories-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'sonar-subcategories-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'SubCategoriesPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: SubCategories', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/sonar-subcategories-plugin/pom.xml b/tests/plugins/sonar-subcategories-plugin/pom.xml deleted file mode 100644 index 85ea4f9714c..00000000000 --- a/tests/plugins/sonar-subcategories-plugin/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>sonar-subcategories-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - - <name>Plugins :: SubCategories</name> - <description>Plugins :: SubCategories</description> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>SubCategoriesPlugin</pluginClass> - </configuration> - </plugin> - - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>native2ascii-maven-plugin</artifactId> - <version>1.0-beta-1</version> - <executions> - <execution> - <goals> - <goal>native2ascii</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/ui-extensions-plugin/build.gradle b/tests/plugins/ui-extensions-plugin/build.gradle new file mode 100644 index 00000000000..5f85c3dd294 --- /dev/null +++ b/tests/plugins/ui-extensions-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'ui-extensions-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'UiExtensionsPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'SonarQube Integration Tests :: Plugins :: UI extensions', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/ui-extensions-plugin/pom.xml b/tests/plugins/ui-extensions-plugin/pom.xml deleted file mode 100644 index 1bbd2a52ccf..00000000000 --- a/tests/plugins/ui-extensions-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>ui-extensions-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>SonarQube Integration Tests :: Plugins :: UI extensions</name> - <description>Main plugin for UT extensions tests</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <extensions>true</extensions> - <configuration> - <pluginClass>UiExtensionsPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/wait-at-platform-level4-plugin/build.gradle b/tests/plugins/wait-at-platform-level4-plugin/build.gradle new file mode 100644 index 00000000000..626dad0d2a2 --- /dev/null +++ b/tests/plugins/wait-at-platform-level4-plugin/build.gradle @@ -0,0 +1,18 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'wait-at-platform-level4-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'WaitAtPlaformLevel4Plugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'Plugins :: Wait at platform level4 initialization phase', + 'Plugin-License': 'GNU LGPL 3' + ) + } +} diff --git a/tests/plugins/wait-at-platform-level4-plugin/pom.xml b/tests/plugins/wait-at-platform-level4-plugin/pom.xml deleted file mode 100644 index dc68f3f652d..00000000000 --- a/tests/plugins/wait-at-platform-level4-plugin/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>wait-at-platform-level4-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>Plugins :: Wait at platform level4 initialization phase</name> - <description>Test for failing Elasticsearch on platform4</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>17.0</version> - <exclusions> - <exclusion> - <!-- should be declared with scope provided --> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <version>1.15</version> - <configuration> - <pluginClass>WaitAtPlaformLevel4Plugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/plugins/ws-plugin/build.gradle b/tests/plugins/ws-plugin/build.gradle new file mode 100644 index 00000000000..879e3df31f0 --- /dev/null +++ b/tests/plugins/ws-plugin/build.gradle @@ -0,0 +1,22 @@ +dependencies { + compile project(':sonar-ws') + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') +} + +jar { + manifest { + attributes( + 'Plugin-Key': 'ws-plugin', + 'Plugin-Version': version, + 'Plugin-Class': 'WsPlugin', + 'Plugin-ChildFirstClassLoader': 'false', + 'Sonar-Version': '7.1-SNAPSHOT', + 'SonarLint-Supported': 'false', + 'Plugin-Name': 'SonarQube Integration Tests :: Plugins :: Ws', + 'Plugin-License': 'GNU LGPL 3' + ) + } + into('META-INF/lib') { + from configurations.compile + } +} diff --git a/tests/plugins/ws-plugin/pom.xml b/tests/plugins/ws-plugin/pom.xml deleted file mode 100644 index c0c0d8e6dca..00000000000 --- a/tests/plugins/ws-plugin/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>plugins</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <artifactId>ws-plugin</artifactId> - <version>1.0-SNAPSHOT</version> - <packaging>sonar-plugin</packaging> - <name>SonarQube Integration Tests :: Plugins :: Ws</name> - <description>Plugin for WS tests</description> - - <dependencies> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-plugin-api</artifactId> - <version>${apiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-ws</artifactId> - <version>${apiVersion}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> - <artifactId>sonar-packaging-maven-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <pluginClass>WsPlugin</pluginClass> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/tests/pom.xml b/tests/pom.xml deleted file mode 100644 index 09a4a0aa7a4..00000000000 --- a/tests/pom.xml +++ /dev/null @@ -1,282 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonarqube</artifactId> - <version>7.1-SNAPSHOT</version> - </parent> - - <groupId>org.sonarsource.sonarqube.tests</groupId> - <artifactId>tests</artifactId> - <name>SonarQube Integration Tests</name> - <description>Integration, performance, upgrade tests</description> - - <properties> - <maven.deploy.skip>true</maven.deploy.skip> - <source.skip>true</source.skip> - <enforcer.skip>true</enforcer.skip> - <skipSanityChecks>true</skipSanityChecks> - <sqZipDir>../sonar-application/target</sqZipDir> - <category>*</category> - <skipIts>false</skipIts> - <jetty.version>9.3.11.v20160721</jetty.version> - <byteman.version>3.0.10</byteman.version> - </properties> - - <dependencies> - <!-- This is just to force Maven to download it in local repository --> - <dependency> - <groupId>com.sonarsource.license</groupId> - <artifactId>sonar-dev-license-plugin</artifactId> - <!-- Should be the same version than in Orchestrator builder in your test suite --> - <version>3.2.0.1163</version> - <scope>runtime</scope> - </dependency> - <dependency> - <!-- required for selenide --> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>23.0</version> - <scope>test</scope> - </dependency> - <!-- must be declared first --> - <dependency> - <groupId>org.sonarsource.orchestrator</groupId> - <artifactId>sonar-orchestrator</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <!-- required for overriding ws-client 4.5 to have complete error stacktraces - in Issue tests --> - <groupId>org.codehaus.sonar</groupId> - <artifactId>sonar-ws-client</artifactId> - <version>5.0</version> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-application</artifactId> - <version>${project.version}</version> - <type>zip</type> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-qa-util</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-process</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-ws</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-guava</artifactId> - </dependency> - <dependency> - <groupId>com.googlecode.json-simple</groupId> - <artifactId>json-simple</artifactId> - </dependency> - <dependency> - <groupId>org.skyscreamer</groupId> - <artifactId>jsonassert</artifactId> - <version>1.2.0</version> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>mockwebserver</artifactId> - </dependency> - <dependency> - <groupId>org.subethamail</groupId> - <artifactId>subethasmtp</artifactId> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <version>${jetty.version}</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlet</artifactId> - <version>${jetty.version}</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-proxy</artifactId> - <version>${jetty.version}</version> - </dependency> - <dependency> - <groupId>org.sonarsource.scanner.cli</groupId> - <artifactId>sonar-scanner-cli</artifactId> - <version>2.7</version> - <type>zip</type> - </dependency> - <dependency> - <groupId>org.jboss.byteman</groupId> - <artifactId>byteman-submit</artifactId> - <version>${byteman.version}</version> - </dependency> - - <!-- JDBC drivers --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - </dependency> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - </dependency> - <dependency> - <groupId>com.microsoft.sqlserver</groupId> - <artifactId>mssql-jdbc</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <argLine>-Dsonar.runtimeVersion=${project.version} - -Dmaven.localRepository=${settings.localRepository} - </argLine> - <skipTests>${skipIts}</skipTests> - <includes> - <include>%regex[.*/(${category})/.*Suite.class]</include> - - <!-- deprecated categories --> - <include>%regex[.*/(${category})Suite.class]</include> - </includes> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-byteman-for-resilience-tests</id> - <phase>generate-test-resources</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>org.jboss.byteman</groupId> - <artifactId>byteman</artifactId> - <version>${byteman.version}</version> - <overWrite>false</overWrite> - <destFileName>byteman.jar</destFileName> - </artifactItem> - </artifactItems> - <outputDirectory>${project.basedir}/target</outputDirectory> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>false</overWriteSnapshots> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <!-- TODO rename to oracle --> - <id>with-db-drivers</id> - <activation> - <property> - <name>with-db-drivers</name> - </property> - </activation> - <dependencies> - <dependency> - <groupId>com.oracle.jdbc</groupId> - <artifactId>ojdbc8</artifactId> - </dependency> - </dependencies> - </profile> - - <profile> - <id>qa</id> - <activation> - <property> - <name>env.SONARSOURCE_QA</name> - <value>true</value> - </property> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-sonarqube-zip</id> - <phase>generate-test-resources</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-application</artifactId> - <version>${project.version}</version> - <type>zip</type> - <overWrite>true</overWrite> - </artifactItem> - </artifactItems> - <outputDirectory>${project.basedir}/../sonar-application/target</outputDirectory> - <overWriteReleases>true</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - </configuration> - </execution> - <execution> - <id>copy-xoo-plugin</id> - <phase>generate-test-resources</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>org.sonarsource.sonarqube</groupId> - <artifactId>sonar-xoo-plugin</artifactId> - <version>${project.version}</version> - <type>sonar-plugin</type> - <overWrite>true</overWrite> - </artifactItem> - </artifactItems> - <outputDirectory>${project.basedir}/../plugins/sonar-xoo-plugin/target</outputDirectory> - <overWriteReleases>true</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project> diff --git a/tests/src/test/java/org/sonarqube/tests/Byteman.java b/tests/src/test/java/org/sonarqube/tests/Byteman.java index f32647f153d..26e21b4a31b 100644 --- a/tests/src/test/java/org/sonarqube/tests/Byteman.java +++ b/tests/src/test/java/org/sonarqube/tests/Byteman.java @@ -20,11 +20,11 @@ package org.sonarqube.tests; import com.sonar.orchestrator.OrchestratorBuilder; +import com.sonar.orchestrator.util.NetworkUtils; import java.io.File; import java.net.InetAddress; import java.util.Collections; import org.jboss.byteman.agent.submit.Submit; -import org.sonar.process.NetworkUtilsImpl; import static java.lang.String.format; @@ -50,16 +50,15 @@ public class Byteman { public Byteman(OrchestratorBuilder builder, Process process) { this.builder = builder; String jar = findBytemanJar(); - port = NetworkUtilsImpl.INSTANCE.getNextAvailablePort(InetAddress.getLoopbackAddress()); + port = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); String bytemanArg = format("-javaagent:%s=boot:%s,port:%d", jar, jar, port); builder.setServerProperty(process.argument, bytemanArg); } private static String findBytemanJar() { - // see pom.xml, Maven copies and renames the artifact. - File jar = new File("target/byteman.jar"); + File jar = new File("build/resources/test/byteman.jar"); if (!jar.exists()) { - throw new IllegalStateException("Can't find " + jar + ". Please execute 'mvn generate-test-resources' once in directory tests/."); + throw new IllegalStateException("Can't find " + jar + ". Please execute './gradlew tests:processIntegrationTestResources'."); } return jar.getAbsolutePath(); } diff --git a/tests/src/test/java/org/sonarqube/tests/Category1Suite.java b/tests/src/test/java/org/sonarqube/tests/Category1Suite.java index 89368b1488a..09e1edb94d4 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category1Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category1Suite.java @@ -29,6 +29,7 @@ import org.sonarqube.tests.settings.EmailsTest; import org.sonarqube.tests.settings.PropertySetsTest; import org.sonarqube.tests.settings.SettingsTest; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -48,7 +49,7 @@ import static util.ItUtils.xooPlugin; public class Category1Suite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .setServerProperty("sonar.notifications.delay", "1") .addPlugin(pluginArtifact("property-sets-plugin")) .addPlugin(pluginArtifact("sonar-subcategories-plugin")) @@ -67,9 +68,6 @@ public class Category1Suite { .addPlugin(pluginArtifact("posttask-plugin")) - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .addPlugin(xooPlugin()) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/Category3Suite.java b/tests/src/test/java/org/sonarqube/tests/Category3Suite.java index 2924b41373f..3a59293a07a 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category3Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category3Suite.java @@ -40,6 +40,7 @@ import org.sonarqube.tests.analysis.TempFolderTest; import org.sonarqube.tests.plugins.VersionPluginTest; import org.sonarqube.tests.webhook.WebhooksTest; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -70,7 +71,7 @@ import static util.ItUtils.xooPlugin; public class Category3Suite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setOrchestratorProperty("javaVersion", "LATEST_RELEASE").addPlugin("java") @@ -89,9 +90,5 @@ public class Category3Suite { // used by ProjectBuilderTest .addPlugin(pluginArtifact("project-builder-plugin")) - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") -// .setServerProperty("sonar.web.javaAdditionalOpts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/Category4Suite.java b/tests/src/test/java/org/sonarqube/tests/Category4Suite.java index 332ef87afe1..b0296eaf19c 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category4Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category4Suite.java @@ -39,6 +39,7 @@ import org.sonarqube.tests.ui.UiTest; import org.sonarqube.tests.ws.WsLocalCallTest; import org.sonarqube.tests.ws.WsTest; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -75,7 +76,7 @@ import static util.ItUtils.xooPlugin; public class Category4Suite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) // Used in UiExtensionsTest @@ -87,8 +88,7 @@ public class Category4Suite { // Used by LogsTest .setServerProperty("sonar.web.accessLogs.pattern", LogsTest.ACCESS_LOGS_PATTERN) - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + .setServerProperty("sonar.web.javaAdditionalOpts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8001") .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java index dd8ecd2876b..842aa61711c 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java @@ -39,6 +39,7 @@ import org.sonarqube.tests.rule.RulesMarkdownTest; import org.sonarqube.tests.rule.RulesWsTest; import org.sonarqube.tests.user.OrganizationIdentityProviderTest; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -70,7 +71,7 @@ public class Category6Suite { public static final int SEARCH_HTTP_PORT = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // for ES resiliency tests .setServerProperty("sonar.search.httpPort", "" + SEARCH_HTTP_PORT) @@ -82,8 +83,5 @@ public class Category6Suite { .addPlugin(pluginArtifact("base-auth-plugin")) .addPlugin(pluginArtifact("ui-extensions-plugin")) - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java b/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java index 3385fad3a5a..eee7c8edf6b 100644 --- a/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java +++ b/tests/src/test/java/org/sonarqube/tests/analysis/AnalysisEsResilienceTest.java @@ -53,6 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; import static org.sonarqube.tests.Byteman.Process.CE; import static org.sonarqube.ws.Ce.TaskStatus.FAILED; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.projectDir; public class AnalysisEsResilienceTest { @@ -63,7 +64,7 @@ public class AnalysisEsResilienceTest { private static final int esHttpPort = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); static { - byteman = new Byteman(Orchestrator.builderEnv(), CE); + byteman = new Byteman(newOrchestratorBuilder(), CE); orchestrator = byteman .getOrchestratorBuilder() .addPlugin(ItUtils.xooPlugin()) diff --git a/tests/src/test/java/org/sonarqube/tests/authorization/AuthorizationSuite.java b/tests/src/test/java/org/sonarqube/tests/authorization/AuthorizationSuite.java index f29f8d2e318..23c03e7888c 100644 --- a/tests/src/test/java/org/sonarqube/tests/authorization/AuthorizationSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/authorization/AuthorizationSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -33,6 +34,7 @@ import static util.ItUtils.xooPlugin; IssuePermissionTest.class, PermissionSearchTest.class, PermissionTemplatePageTest.class, + ProvisioningPermissionTest.class, QualityProfileAdminPermissionTest.class, SystemPasscodeTest.class @@ -40,10 +42,7 @@ import static util.ItUtils.xooPlugin; public class AuthorizationSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // for SystemPasscodeTest // this privileged plugin provides the WS api/system_passcode/check // that is used by the tests @@ -52,5 +51,4 @@ public class AuthorizationSuite { .addPlugin(xooPlugin()) .build(); - } diff --git a/tests/src/test/java/org/sonarqube/tests/ce/CeShutdownTest.java b/tests/src/test/java/org/sonarqube/tests/ce/CeShutdownTest.java index 62dabd40247..ce8678dc292 100644 --- a/tests/src/test/java/org/sonarqube/tests/ce/CeShutdownTest.java +++ b/tests/src/test/java/org/sonarqube/tests/ce/CeShutdownTest.java @@ -37,6 +37,7 @@ import util.ItUtils; import static com.google.common.base.Preconditions.checkState; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; public class CeShutdownTest { @@ -115,7 +116,7 @@ public class CeShutdownTest { pauseFile = temp.newFile(); FileUtils.touch(pauseFile); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .setServerProperty("sonar.ce.pauseTask.path", pauseFile.getAbsolutePath()) .setServerProperty("sonar.ce.gracefulStopTimeOutInMs", "" + timeOutInMs) .addPlugin(ItUtils.xooPlugin()) diff --git a/tests/src/test/java/org/sonarqube/tests/ce/CeWorkersTest.java b/tests/src/test/java/org/sonarqube/tests/ce/CeWorkersTest.java index 82453df03d6..64d85836fdb 100644 --- a/tests/src/test/java/org/sonarqube/tests/ce/CeWorkersTest.java +++ b/tests/src/test/java/org/sonarqube/tests/ce/CeWorkersTest.java @@ -58,6 +58,7 @@ import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.newAdminWsClient; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -82,7 +83,7 @@ public class CeWorkersTest { public static void setUp() throws Exception { sharedMemory = temporaryFolder.newFile(); - OrchestratorBuilder builder = Orchestrator.builderEnv() + OrchestratorBuilder builder = newOrchestratorBuilder() .addPlugin(pluginArtifact("fake-governance-plugin")) .setServerProperty("fakeGoverance.workerLatch.sharedMemoryFile", sharedMemory.getAbsolutePath()) // overwrite default value to display heap dump on OOM and reduce max heap diff --git a/tests/src/test/java/org/sonarqube/tests/component/ComponentSuite.java b/tests/src/test/java/org/sonarqube/tests/component/ComponentSuite.java index 5053112626c..0384ce9562b 100644 --- a/tests/src/test/java/org/sonarqube/tests/component/ComponentSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/component/ComponentSuite.java @@ -23,6 +23,7 @@ import com.sonar.orchestrator.Orchestrator; import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import util.ItUtils; import static util.ItUtils.xooPlugin; @@ -35,9 +36,7 @@ import static util.ItUtils.xooPlugin; public class ComponentSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + public static final Orchestrator ORCHESTRATOR = ItUtils.newOrchestratorBuilder() .addPlugin(xooPlugin()) diff --git a/tests/src/test/java/org/sonarqube/tests/duplication/DuplicationSuite.java b/tests/src/test/java/org/sonarqube/tests/duplication/DuplicationSuite.java index bbe5e540ea6..e8c1833f402 100644 --- a/tests/src/test/java/org/sonarqube/tests/duplication/DuplicationSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/duplication/DuplicationSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -36,11 +37,8 @@ import static util.ItUtils.xooPlugin; }) public class DuplicationSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) - // reduce Elasticsearch memory - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/issue/IssueCreationDatePluginChangedTest.java b/tests/src/test/java/org/sonarqube/tests/issue/IssueCreationDatePluginChangedTest.java index af2fbd1e1a6..cff4e0f1aa5 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/IssueCreationDatePluginChangedTest.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/IssueCreationDatePluginChangedTest.java @@ -43,6 +43,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.newUserWsClient; import static util.ItUtils.pluginArtifact; import static util.ItUtils.projectDir; @@ -68,7 +69,7 @@ public class IssueCreationDatePluginChangedTest { private static final String USER_EMAIL = "tester@example.org"; @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) .addPlugin(ItUtils.pluginArtifact("backdating-plugin-v1")) .addPlugin(ItUtils.pluginArtifact("backdating-customplugin")) diff --git a/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java b/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java index ed6bf7a60a7..8ff714fe6e3 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -51,7 +52,7 @@ import static util.ItUtils.xooPlugin; public class IssueSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .setServerProperty("sonar.search.httpPort", "9025") .addPlugin(xooPlugin()) @@ -63,9 +64,6 @@ public class IssueSuite { .setServerProperty("organization.enabled", "true") - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java index 2babb0d1985..85381682159 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -33,12 +34,9 @@ import static util.ItUtils.xooPlugin; public class OrganizationIssueSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/lite/LiteTest.java b/tests/src/test/java/org/sonarqube/tests/lite/LiteTest.java index 8551fd35d3c..0c89f7cd8fe 100644 --- a/tests/src/test/java/org/sonarqube/tests/lite/LiteTest.java +++ b/tests/src/test/java/org/sonarqube/tests/lite/LiteTest.java @@ -38,6 +38,7 @@ import org.sonarqube.ws.client.measures.MeasuresService; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.runProjectAnalysis; import static util.ItUtils.xooPlugin; @@ -45,7 +46,7 @@ public class LiteTest { private static final String PROJECT_KEY = "com.sonarsource.it.samples:multi-modules-sample"; - private static Orchestrator orchestrator = Orchestrator.builderEnv() + private static Orchestrator orchestrator = newOrchestratorBuilder() .setOrchestratorProperty("sonar.web.context", "/sonarqube") .addPlugin(xooPlugin()) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/marketplace/UpdateCenterTest.java b/tests/src/test/java/org/sonarqube/tests/marketplace/UpdateCenterTest.java index e1c851aaae1..8e50a080451 100644 --- a/tests/src/test/java/org/sonarqube/tests/marketplace/UpdateCenterTest.java +++ b/tests/src/test/java/org/sonarqube/tests/marketplace/UpdateCenterTest.java @@ -28,6 +28,7 @@ import org.sonarqube.qa.util.pageobjects.MarketplacePage; import org.sonarqube.qa.util.pageobjects.Navigation; import util.user.UserRule; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; /** @@ -36,7 +37,7 @@ import static util.ItUtils.pluginArtifact; public class UpdateCenterTest { @ClassRule - public static final Orchestrator orchestrator = Orchestrator.builderEnv() + public static final Orchestrator orchestrator = newOrchestratorBuilder() .setServerProperty("sonar.updatecenter.url", UpdateCenterTest.class.getResource("/marketplace/UpdateCenterTest/update-center.properties").toString()) .addPlugin(pluginArtifact("sonar-fake-plugin")) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/measure/MeasureSuite.java b/tests/src/test/java/org/sonarqube/tests/measure/MeasureSuite.java index 7bd56dc9686..ea6ad5d0e7f 100644 --- a/tests/src/test/java/org/sonarqube/tests/measure/MeasureSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/measure/MeasureSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -44,10 +45,7 @@ import static util.ItUtils.xooPlugin; public class MeasureSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) // used by DecimalScaleMetricTest diff --git a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java index 7511f41200c..024a8849b41 100644 --- a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -40,14 +41,11 @@ import static util.ItUtils.xooPlugin; public class OrganizationSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) .addPlugin(pluginArtifact("fake-billing-plugin")) .addPlugin(pluginArtifact("ui-extensions-plugin")) - - // reduce memory for Elasticsearch to 128M - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/performance/scanner/ScannerPerformanceSuite.java b/tests/src/test/java/org/sonarqube/tests/performance/scanner/ScannerPerformanceSuite.java index 1b789600e24..918cb4ba7a6 100644 --- a/tests/src/test/java/org/sonarqube/tests/performance/scanner/ScannerPerformanceSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/performance/scanner/ScannerPerformanceSuite.java @@ -29,6 +29,9 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.sonarqube.tests.performance.AbstractPerfTest; +import static util.ItUtils.newOrchestratorBuilder; +import static util.ItUtils.xooPlugin; + @RunWith(Suite.class) @Suite.SuiteClasses({ BootstrappingTest.class, @@ -41,9 +44,8 @@ import org.sonarqube.tests.performance.AbstractPerfTest; public class ScannerPerformanceSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator - .builderEnv() - .addPlugin(FileLocation.byWildcardMavenFilename(new File("../plugins/sonar-xoo-plugin/target"), "sonar-xoo-plugin-*.jar")) + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() + .addPlugin(xooPlugin()) // should not be so high, but required as long embedded h2 is used -> requires more memory on server .setServerProperty("sonar.web.javaOpts", "-Xmx1G -XX:+HeapDumpOnOutOfMemoryError") // Needed by DuplicationTest::hugeJavaFile diff --git a/tests/src/test/java/org/sonarqube/tests/performance/server/ComputeEnginePerfTest.java b/tests/src/test/java/org/sonarqube/tests/performance/server/ComputeEnginePerfTest.java index 7ee7fa84624..f6e15a279a1 100644 --- a/tests/src/test/java/org/sonarqube/tests/performance/server/ComputeEnginePerfTest.java +++ b/tests/src/test/java/org/sonarqube/tests/performance/server/ComputeEnginePerfTest.java @@ -34,6 +34,9 @@ import org.junit.rules.TemporaryFolder; import org.sonarqube.tests.performance.AbstractPerfTest; import org.sonarqube.tests.performance.ServerLogs; +import static util.ItUtils.newOrchestratorBuilder; +import static util.ItUtils.xooPlugin; + public class ComputeEnginePerfTest extends AbstractPerfTest { private static int MAX_HEAP_SIZE_IN_MEGA = 600; @@ -41,9 +44,8 @@ public class ComputeEnginePerfTest extends AbstractPerfTest { public static TemporaryFolder temp = new TemporaryFolder(); @ClassRule - public static Orchestrator orchestrator = Orchestrator - .builderEnv() - .addPlugin(FileLocation.byWildcardMavenFilename(new File("../plugins/sonar-xoo-plugin/target"), "sonar-xoo-plugin-*.jar")) + public static Orchestrator orchestrator = newOrchestratorBuilder() + .addPlugin(xooPlugin()) .setServerProperty( "sonar.web.javaOpts", String.format("-Xms%dm -Xmx%dm -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true", MAX_HEAP_SIZE_IN_MEGA, MAX_HEAP_SIZE_IN_MEGA)) diff --git a/tests/src/test/java/org/sonarqube/tests/performance/server/ServerPerfTest.java b/tests/src/test/java/org/sonarqube/tests/performance/server/ServerPerfTest.java index 3de0d05c8cc..2d147551db5 100644 --- a/tests/src/test/java/org/sonarqube/tests/performance/server/ServerPerfTest.java +++ b/tests/src/test/java/org/sonarqube/tests/performance/server/ServerPerfTest.java @@ -33,6 +33,8 @@ import org.sonarqube.tests.performance.AbstractPerfTest; import org.sonarqube.tests.performance.ServerLogs; import static org.apache.commons.io.FileUtils.readLines; +import static util.ItUtils.newOrchestratorBuilder; +import static util.ItUtils.xooPlugin; public class ServerPerfTest extends AbstractPerfTest { private static final int TIMEOUT_3_MINUTES = 1000 * 60 * 3; @@ -44,8 +46,8 @@ public class ServerPerfTest extends AbstractPerfTest { @Test public void server_startup_and_shutdown() throws Exception { String defaultWebJavaOptions = "-Xmx768m -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Dfile.encoding=UTF-8"; - Orchestrator orchestrator = Orchestrator.builderEnv() - .addPlugin(FileLocation.byWildcardMavenFilename(new File("../plugins/sonar-xoo-plugin/target"), "sonar-xoo-plugin-*.jar")) + Orchestrator orchestrator = newOrchestratorBuilder() + .addPlugin(xooPlugin()) // See http://wiki.apache.org/tomcat/HowTo/FasterStartUp // Sometimes source of entropy is too small and Tomcat spends ~20 seconds on the step : diff --git a/tests/src/test/java/org/sonarqube/tests/plugins/CompressPluginsTest.java b/tests/src/test/java/org/sonarqube/tests/plugins/CompressPluginsTest.java index ca57e9fc7e4..f2601bdaa1a 100644 --- a/tests/src/test/java/org/sonarqube/tests/plugins/CompressPluginsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/plugins/CompressPluginsTest.java @@ -24,7 +24,6 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.SonarScanner; -import org.json.JSONException; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; @@ -34,6 +33,7 @@ import org.sonarqube.ws.client.GetRequest; import org.sonarqube.ws.client.WsResponse; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.projectDir; import static util.ItUtils.xooPlugin; @@ -42,7 +42,7 @@ import static util.ItUtils.xooPlugin; */ public class CompressPluginsTest { @ClassRule - public static Orchestrator orchestrator = Orchestrator.builderEnv() + public static Orchestrator orchestrator = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.pluginsCompression.enable", "true") .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/plugins/PluginsTest.java b/tests/src/test/java/org/sonarqube/tests/plugins/PluginsTest.java index eb32eebbc6c..bcde9c81ca2 100644 --- a/tests/src/test/java/org/sonarqube/tests/plugins/PluginsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/plugins/PluginsTest.java @@ -24,8 +24,6 @@ import com.sonar.orchestrator.OrchestratorBuilder; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.SonarScanner; import com.sonar.orchestrator.locator.MavenLocation; -import java.io.File; -import java.net.MalformedURLException; import java.util.Arrays; import java.util.List; import org.junit.BeforeClass; @@ -50,8 +48,8 @@ import org.sonarqube.tests.plugins.checks.SwiftCheck; import org.sonarqube.tests.plugins.checks.Validation; import org.sonarqube.tests.plugins.checks.WebCheck; -import static com.sonar.orchestrator.locator.FileLocation.byWildcardMavenFilename; import static org.assertj.core.api.Assertions.fail; +import static util.ItUtils.newOrchestratorBuilder; /** * Verify that latest releases of the plugins available in update center @@ -83,8 +81,7 @@ public class PluginsTest { @BeforeClass public static void startServer() { - OrchestratorBuilder builder = Orchestrator.builderEnv() - .setZipFile(byWildcardMavenFilename(new File("../sonar-application/target"), "sonar*.zip").getFile()); + OrchestratorBuilder builder = newOrchestratorBuilder(); builder.addPlugin(MavenLocation.of("com.sonarsource.license", "sonar-dev-license-plugin", "3.2.0.1163")); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java index 575f42abf47..eaf2ba850be 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java @@ -26,6 +26,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -50,9 +51,7 @@ public class ProjectSuite { static final int SEARCH_HTTP_PORT = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // for ES resiliency tests .setServerProperty("sonar.search.httpPort", "" + SEARCH_HTTP_PORT) .setServerProperty("sonar.search.recovery.delayInMs", "1000") diff --git a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java b/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java index 872029f36d6..d65f7b52c37 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -33,7 +34,7 @@ import static util.ItUtils.xooPlugin; public class SonarCloudProjectSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.sonarcloud.enabled", "true") .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java index 574957407de..985f8b3a3dc 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -36,13 +37,10 @@ import static util.ItUtils.xooPlugin; public class OrganizationQualityGateSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // required for notification tests .setServerProperty("sonar.notifications.delay", "1") - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .addPlugin(pluginArtifact("posttask-plugin")) .addPlugin(xooPlugin()) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateSuite.java b/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateSuite.java index 3ce87ad9528..910144e75cb 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -38,13 +39,10 @@ import static util.ItUtils.xooPlugin; public class QualityGateSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // required for notification tests .setServerProperty("sonar.notifications.delay", "1") - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .addPlugin(pluginArtifact("posttask-plugin")) .addPlugin(xooPlugin()) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/qualityModel/QualityModelSuite.java b/tests/src/test/java/org/sonarqube/tests/qualityModel/QualityModelSuite.java index c7431a8bbff..b796cfe6b84 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityModel/QualityModelSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityModel/QualityModelSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -40,12 +41,9 @@ import static util.ItUtils.xooPlugin; public class QualityModelSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/qualityProfile/ActiveRuleEsResilienceTest.java b/tests/src/test/java/org/sonarqube/tests/qualityProfile/ActiveRuleEsResilienceTest.java index 869beb0154b..44a91226fda 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityProfile/ActiveRuleEsResilienceTest.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityProfile/ActiveRuleEsResilienceTest.java @@ -38,6 +38,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.sonarqube.tests.Byteman.Process.WEB; +import static util.ItUtils.newOrchestratorBuilder; public class ActiveRuleEsResilienceTest { private static final String RULE_ONE_BUG_PER_LINE = "xoo:OneBugIssuePerLine"; @@ -47,7 +48,7 @@ public class ActiveRuleEsResilienceTest { private static final Byteman byteman; static { - byteman = new Byteman(Orchestrator.builderEnv(), WEB); + byteman = new Byteman(newOrchestratorBuilder(), WEB); orchestrator = byteman .getOrchestratorBuilder() .setServerProperty("sonar.search.recovery.delayInMs", "1000") diff --git a/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesNotificationTest.java b/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesNotificationTest.java index 2eb34952fa4..861beecbe53 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesNotificationTest.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesNotificationTest.java @@ -41,6 +41,7 @@ import util.user.UserRule; import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; public class BuiltInQualityProfilesNotificationTest { @@ -67,7 +68,7 @@ public class BuiltInQualityProfilesNotificationTest { @Test public void does_not_send_mail_if_no_quality_profile_is_updated() throws Exception { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("foo-plugin-v1")) .setServerProperty("email.smtp_host.secured", "localhost") .setServerProperty("email.smtp_port.secured", Integer.toString(smtpServer.getServer().getPort())) @@ -86,7 +87,7 @@ public class BuiltInQualityProfilesNotificationTest { @Test public void send_mail_if_quality_profile_is_updated() throws Exception { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("foo-plugin-v1")) .setServerProperty("sonar.notifications.delay", "1") .setServerProperty("email.smtp_host.secured", "localhost") @@ -174,7 +175,7 @@ public class BuiltInQualityProfilesNotificationTest { @Test public void do_not_send_mail_if_notifications_are_disabled_in_settings() throws Exception { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("foo-plugin-v1")) .setServerProperty("sonar.builtInQualityProfiles.disableNotificationOnUpdate", "true") .setServerProperty("email.smtp_host.secured", "localhost") diff --git a/tests/src/test/java/org/sonarqube/tests/rule/RuleEsResilienceTest.java b/tests/src/test/java/org/sonarqube/tests/rule/RuleEsResilienceTest.java index 2efd49948ce..1163564bbba 100644 --- a/tests/src/test/java/org/sonarqube/tests/rule/RuleEsResilienceTest.java +++ b/tests/src/test/java/org/sonarqube/tests/rule/RuleEsResilienceTest.java @@ -38,6 +38,7 @@ import util.ItUtils; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.sonarqube.tests.Byteman.Process.WEB; +import static util.ItUtils.newOrchestratorBuilder; public class RuleEsResilienceTest { @@ -46,7 +47,7 @@ public class RuleEsResilienceTest { private static final Byteman byteman; static { - byteman = new Byteman(Orchestrator.builderEnv(), WEB); + byteman = new Byteman(newOrchestratorBuilder(), WEB); orchestrator = byteman .getOrchestratorBuilder() .setServerProperty("sonar.search.recovery.delayInMs", "1000") diff --git a/tests/src/test/java/org/sonarqube/tests/rule/RuleReKeyingTest.java b/tests/src/test/java/org/sonarqube/tests/rule/RuleReKeyingTest.java index ddff401dcc1..6576d0ec924 100644 --- a/tests/src/test/java/org/sonarqube/tests/rule/RuleReKeyingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/rule/RuleReKeyingTest.java @@ -40,6 +40,7 @@ import org.sonarqube.ws.client.issues.SearchRequest; import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.projectDir; @@ -60,7 +61,7 @@ public class RuleReKeyingTest { @Test public void rules_are_re_keyed_when_upgrading_and_downgrading_plugin() { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("foo-plugin-v1")) .build(); orchestrator.start(); diff --git a/tests/src/test/java/org/sonarqube/tests/serverSystem/RestartTest.java b/tests/src/test/java/org/sonarqube/tests/serverSystem/RestartTest.java index 010ba984229..532925b7c50 100644 --- a/tests/src/test/java/org/sonarqube/tests/serverSystem/RestartTest.java +++ b/tests/src/test/java/org/sonarqube/tests/serverSystem/RestartTest.java @@ -29,7 +29,6 @@ import org.junit.rules.DisableOnDebug; import org.junit.rules.ExpectedException; import org.junit.rules.TestRule; import org.junit.rules.Timeout; -import org.sonarqube.qa.util.Tester; import org.sonarqube.ws.System; import org.sonarqube.ws.client.PostRequest; import org.sonarqube.ws.client.WsClient; @@ -39,6 +38,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import static util.ItUtils.newAdminWsClient; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.newWsClient; /** @@ -64,7 +64,7 @@ public class RestartTest { public void restart_in_prod_mode_requires_sysadmin_permission_and_restarts() throws Exception { // server classloader locks Jar files on Windows if (!SystemUtils.IS_OS_WINDOWS) { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .setOrchestratorProperty("orchestrator.keepWorkspace", "true") .build(); orchestrator.start(); diff --git a/tests/src/test/java/org/sonarqube/tests/serverSystem/ServerSystemRestartingOrchestrator.java b/tests/src/test/java/org/sonarqube/tests/serverSystem/ServerSystemRestartingOrchestrator.java index 161456b209a..ed4fd75d914 100644 --- a/tests/src/test/java/org/sonarqube/tests/serverSystem/ServerSystemRestartingOrchestrator.java +++ b/tests/src/test/java/org/sonarqube/tests/serverSystem/ServerSystemRestartingOrchestrator.java @@ -33,6 +33,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import static util.ItUtils.newAdminWsClient; +import static util.ItUtils.newOrchestratorBuilder; /** * This class start a new orchestrator on each test case @@ -57,7 +58,7 @@ public class ServerSystemRestartingOrchestrator { @Test public void check_minimal_sonar_version_at_startup() throws Exception { try { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(FileLocation.of(new File(ServerSystemRestartingOrchestrator.class.getResource("/serverSystem/ServerSystemTest/incompatible-plugin-1.0.jar").toURI()))) .build(); orchestrator.start(); @@ -70,9 +71,9 @@ public class ServerSystemRestartingOrchestrator { @Test public void support_install_dir_with_whitespaces() throws Exception { - String dirName = "target/has space"; + String dirName = "build/distributions/has space"; FileUtils.deleteDirectory(new File(dirName)); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .setOrchestratorProperty("orchestrator.workspaceDir", dirName) .build(); orchestrator.start(); @@ -83,7 +84,7 @@ public class ServerSystemRestartingOrchestrator { // SONAR-4748 @Test public void should_create_in_temp_folder() throws Exception { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(ItUtils.pluginArtifact("server-plugin")) .setServerProperty("sonar.createTempFiles", "true") .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/serverSystem/SystemStateTest.java b/tests/src/test/java/org/sonarqube/tests/serverSystem/SystemStateTest.java index 94d9fc77b29..7a2ee2e42a5 100644 --- a/tests/src/test/java/org/sonarqube/tests/serverSystem/SystemStateTest.java +++ b/tests/src/test/java/org/sonarqube/tests/serverSystem/SystemStateTest.java @@ -41,6 +41,7 @@ import org.sonarqube.ws.client.WsClient; import static com.google.common.base.Preconditions.checkState; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.newSystemUserWsClient; import static util.ItUtils.newWsClient; import static util.ItUtils.pluginArtifact; @@ -128,7 +129,7 @@ public class SystemStateTest { void start(Lock lock) { checkState(orchestrator == null); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("server-plugin")) .setServerProperty("sonar.web.startupLock.path", lock.webFile.getAbsolutePath()) .setServerProperty("sonar.ce.startupLock.path", lock.ceFile.getAbsolutePath()) diff --git a/tests/src/test/java/org/sonarqube/tests/settings/SettingsTestRestartingOrchestrator.java b/tests/src/test/java/org/sonarqube/tests/settings/SettingsTestRestartingOrchestrator.java index 8aee5ebb876..1c4f5a88e3e 100644 --- a/tests/src/test/java/org/sonarqube/tests/settings/SettingsTestRestartingOrchestrator.java +++ b/tests/src/test/java/org/sonarqube/tests/settings/SettingsTestRestartingOrchestrator.java @@ -21,7 +21,6 @@ package org.sonarqube.tests.settings; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.SonarScanner; -import java.io.UnsupportedEncodingException; import java.net.URL; import org.junit.After; import org.junit.Rule; @@ -33,6 +32,7 @@ import util.user.UserRule; import static com.codeborne.selenide.Condition.visible; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.projectDir; import static util.ItUtils.xooPlugin; @@ -60,7 +60,7 @@ public class SettingsTestRestartingOrchestrator { @Test public void test_settings() { URL secretKeyUrl = getClass().getResource("/settings/SettingsTest/sonar-secret.txt"); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("settings-plugin")) .addPlugin(pluginArtifact("license-plugin")) .setServerProperty("sonar.secretKeyPath", secretKeyUrl.getFile()) @@ -86,7 +86,7 @@ public class SettingsTestRestartingOrchestrator { @Test public void property_relocation() { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("property-relocation-plugin")) .addPlugin(xooPlugin()) .setServerProperty("sonar.deprecatedKey", "true") diff --git a/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java b/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java index fbcb1885bf9..070a0fc941e 100644 --- a/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -37,9 +38,7 @@ import static util.ItUtils.xooPlugin; public class SourceSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator - .builderEnv() - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .setOrchestratorProperty("scmgitVersion", "LATEST_RELEASE") .addPlugin(xooPlugin()) .addPlugin("scmgit") diff --git a/tests/src/test/java/org/sonarqube/tests/startup/StartupIndexationTest.java b/tests/src/test/java/org/sonarqube/tests/startup/StartupIndexationTest.java index 643a0ff12d5..f654949bd26 100644 --- a/tests/src/test/java/org/sonarqube/tests/startup/StartupIndexationTest.java +++ b/tests/src/test/java/org/sonarqube/tests/startup/StartupIndexationTest.java @@ -38,6 +38,7 @@ import org.sonarqube.ws.Users; import org.sonarqube.ws.client.users.SearchRequest; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; public class StartupIndexationTest { @@ -81,7 +82,7 @@ public class StartupIndexationTest { pauseFile = temp.newFile(); FileUtils.touch(pauseFile); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .setServerProperty("sonar.web.pause.path", pauseFile.getAbsolutePath()) .addPlugin(pluginArtifact("wait-at-platform-level4-plugin")) .setStartupLogWatcher(l -> l.contains("PlatformLevel4 initialization phase is paused")) diff --git a/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryOptOutTest.java b/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryOptOutTest.java index 1cd6186184d..a827baa6282 100644 --- a/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryOptOutTest.java +++ b/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryOptOutTest.java @@ -32,13 +32,14 @@ import org.sonarqube.ws.client.GetRequest; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.jsonToMap; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; public class TelemetryOptOutTest { public static MockWebServer server = new MockWebServer(); - private static Orchestrator orchestrator = Orchestrator.builderEnv() + private static Orchestrator orchestrator = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.telemetry.enable", "false") .setServerProperty("sonar.telemetry.url", server.url("").toString()) diff --git a/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryUploadTest.java b/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryUploadTest.java index 8e8a9007f59..fd17f385112 100644 --- a/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryUploadTest.java +++ b/tests/src/test/java/org/sonarqube/tests/telemetry/TelemetryUploadTest.java @@ -37,6 +37,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; import static util.ItUtils.jsonToMap; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.runProjectAnalysis; import static util.ItUtils.xooPlugin; @@ -60,7 +61,7 @@ public class TelemetryUploadTest { @Test public void sent_telemetry_data() throws Exception { telemetryServer.enqueue(new MockResponse().setResponseCode(200)); - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.telemetry.url", telemetryServer.url("").toString()) // increase frequency so that payload is sent quickly after startup @@ -104,7 +105,7 @@ public class TelemetryUploadTest { @Test public void does_not_send_telemetry_data_right_away_by_Default() { - orchestrator = Orchestrator.builderEnv() + orchestrator = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.telemetry.url", telemetryServer.url("").toString()) .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/test/TestSuite.java b/tests/src/test/java/org/sonarqube/tests/test/TestSuite.java index 8afec8fdf6a..9afbbfa2de9 100644 --- a/tests/src/test/java/org/sonarqube/tests/test/TestSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/test/TestSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -36,12 +37,9 @@ import static util.ItUtils.xooPlugin; public class TestSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) - // reduce memory for Elasticsearch - .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/upgrade/UpgradeTest.java b/tests/src/test/java/org/sonarqube/tests/upgrade/UpgradeTest.java index 0828b039b11..8d79898aa13 100644 --- a/tests/src/test/java/org/sonarqube/tests/upgrade/UpgradeTest.java +++ b/tests/src/test/java/org/sonarqube/tests/upgrade/UpgradeTest.java @@ -25,7 +25,7 @@ import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.OrchestratorBuilder; import com.sonar.orchestrator.build.MavenBuild; import com.sonar.orchestrator.container.Server; -import com.sonar.orchestrator.locator.FileLocation; +import com.sonar.orchestrator.locator.MavenLocation; import com.sonar.orchestrator.version.Version; import java.io.File; import java.io.IOException; @@ -53,6 +53,8 @@ import static java.lang.Integer.parseInt; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; + public class UpgradeTest { private static final String PROJECT_KEY = "org.apache.struts:struts-parent"; @@ -70,8 +72,8 @@ public class UpgradeTest { } @Test - public void test_upgrade_from_5_6_1() { - testDatabaseUpgrade(Version.create("5.6.1")); + public void test_upgrade_from_6_7() { + testDatabaseUpgrade(Version.create("6.7")); } private void testDatabaseUpgrade(Version fromVersion) { @@ -152,8 +154,8 @@ public class UpgradeTest { OrchestratorBuilder builder = Orchestrator.builderEnv() .setSonarVersion(sqVersion.toString()) .setOrchestratorProperty("orchestrator.keepDatabase", String.valueOf(keepDatabase)) - .setOrchestratorProperty("javaVersion", "3.14") - .addPlugin("java") + .setOrchestratorProperty("orchestrator.workspaceDir", "build/it") + .addPlugin(MavenLocation.of("org.sonarsource.java", "sonar-java-plugin", "5.1.0.13090")) .setStartupLogWatcher(log -> log.contains("Process[web] is up")); orchestrator = builder.build(); orchestrator.start(); @@ -161,8 +163,7 @@ public class UpgradeTest { } private void startAndUpgradeDevServer() { - OrchestratorBuilder builder = Orchestrator.builderEnv() - .setZipFile(FileLocation.byWildcardMavenFilename(new File("../sonar-application/target"), "sonar*.zip").getFile()) + OrchestratorBuilder builder = newOrchestratorBuilder() .setOrchestratorProperty("orchestrator.keepDatabase", "true") .setOrchestratorProperty("javaVersion", LATEST_JAVA_RELEASE) .addPlugin("java") diff --git a/tests/src/test/java/org/sonarqube/tests/user/OnboardingTest.java b/tests/src/test/java/org/sonarqube/tests/user/OnboardingTest.java index e7c709f1237..440e0d4bba6 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/OnboardingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/user/OnboardingTest.java @@ -30,13 +30,14 @@ import org.sonarqube.ws.client.users.DeactivateRequest; import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newOrchestratorBuilder; public class OnboardingTest { private static final String ONBOARDING_TUTORIAL_SHOW_TO_NEW_USERS = "sonar.onboardingTutorial.showToNewUsers"; @ClassRule - public static final Orchestrator orchestrator = Orchestrator.builderEnv().build(); + public static final Orchestrator orchestrator = newOrchestratorBuilder().build(); @Rule public Tester tester = new Tester(orchestrator).disableOrganizations(); diff --git a/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java b/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java index e5586b474e2..c0f14d8e6a3 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java +++ b/tests/src/test/java/org/sonarqube/tests/user/RealmAuthenticationTest.java @@ -51,6 +51,7 @@ import static java.net.HttpURLConnection.HTTP_OK; import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.newUserWsClient; import static util.ItUtils.pluginArtifact; import static util.ItUtils.resetSettings; @@ -76,7 +77,7 @@ public class RealmAuthenticationTest { private static final String USERS_PROPERTY = "sonar.fakeauthenticator.users"; @ClassRule - public static final Orchestrator orchestrator = Orchestrator.builderEnv() + public static final Orchestrator orchestrator = newOrchestratorBuilder() .addPlugin(pluginArtifact("security-plugin")) .setServerProperty("sonar.security.realm", "FakeRealm") .build(); diff --git a/tests/src/test/java/org/sonarqube/tests/user/SsoAuthenticationTest.java b/tests/src/test/java/org/sonarqube/tests/user/SsoAuthenticationTest.java index 07159881842..146f37ea777 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/SsoAuthenticationTest.java +++ b/tests/src/test/java/org/sonarqube/tests/user/SsoAuthenticationTest.java @@ -34,6 +34,7 @@ import util.user.UserRule; import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.call; +import static util.ItUtils.newOrchestratorBuilder; /** * Test SSO authentication (using HTTP headers). @@ -56,7 +57,7 @@ public class SsoAuthenticationTest { static final String GROUP_3 = "group-3"; @ClassRule - public static final Orchestrator orchestrator = Orchestrator.builderEnv() + public static final Orchestrator orchestrator = newOrchestratorBuilder() .setServerProperty("sonar.web.sso.enable", "true") .setServerProperty("sonar.web.sso.loginHeader", LOGIN_HEADER) .setServerProperty("sonar.web.sso.nameHeader", NAME_HEADER) diff --git a/tests/src/test/java/org/sonarqube/tests/user/UserEsResilienceTest.java b/tests/src/test/java/org/sonarqube/tests/user/UserEsResilienceTest.java index ca5516f3896..92ff670f0e3 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/UserEsResilienceTest.java +++ b/tests/src/test/java/org/sonarqube/tests/user/UserEsResilienceTest.java @@ -39,6 +39,7 @@ import util.ItUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.sonarqube.tests.Byteman.Process.WEB; import static util.ItUtils.expectHttpError; +import static util.ItUtils.newOrchestratorBuilder; public class UserEsResilienceTest { @@ -47,7 +48,7 @@ public class UserEsResilienceTest { private static final Byteman byteman; static { - byteman = new Byteman(Orchestrator.builderEnv(), WEB); + byteman = new Byteman(newOrchestratorBuilder(), WEB); orchestrator = byteman .getOrchestratorBuilder() .setServerProperty("sonar.search.recovery.delayInMs", "1000") diff --git a/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java b/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java index 4eb7d0138dd..0f448dd9a7a 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/user/UserSuite.java @@ -25,6 +25,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -44,7 +45,7 @@ import static util.ItUtils.xooPlugin; public class UserSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) // Used in BaseIdentityProviderTest diff --git a/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java b/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java index 6412ec5c48e..e3bc89f9269 100644 --- a/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -34,7 +35,7 @@ import static util.ItUtils.xooPlugin; public class WebhooksSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) // reduce memory for Elasticsearch diff --git a/tests/src/test/java/util/ItUtils.java b/tests/src/test/java/util/ItUtils.java index d91c8e37872..a5c763180de 100644 --- a/tests/src/test/java/util/ItUtils.java +++ b/tests/src/test/java/util/ItUtils.java @@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableMap; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.OrchestratorBuilder; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.SonarRunner; import com.sonar.orchestrator.container.Server; @@ -54,6 +55,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; @@ -96,8 +98,23 @@ public class ItUtils { private ItUtils() { } + public static OrchestratorBuilder newOrchestratorBuilder() { + OrchestratorBuilder builder = Orchestrator.builderEnv(); + String version = System.getProperty("sonar.runtimeVersion"); + if (StringUtils.isEmpty(version)) { + File zip = FileLocation.byWildcardMavenFilename(new File("../sonar-application/build/distributions"), "sonar-application-*.zip").getFile(); + builder.setZipFile(zip); + } else { + builder.setSonarVersion(version); + } + return builder + // reduce memory for Elasticsearch + .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + .setOrchestratorProperty("orchestrator.workspaceDir", "build/it"); + } + public static FileLocation xooPlugin() { - return FileLocation.byWildcardMavenFilename(new File("../plugins/sonar-xoo-plugin/target"), "sonar-xoo-plugin-*.jar"); + return FileLocation.byWildcardMavenFilename(new File("../plugins/sonar-xoo-plugin/build/libs"), "sonar-xoo-plugin-*.jar"); } public static List<Issue> getAllServerIssues(Orchestrator orchestrator) { @@ -164,7 +181,7 @@ public class ItUtils { * @param dirName the directory of it/plugins, for example "sonar-fake-plugin". */ public static FileLocation pluginArtifact(String dirName) { - return FileLocation.byWildcardMavenFilename(new File("plugins/" + dirName + "/target"), dirName + "-*.jar"); + return FileLocation.byWildcardMavenFilename(new File("plugins/" + dirName + "/build/libs"), dirName + "-*.jar"); } /** diff --git a/third-party-licenses.sh b/third-party-licenses.sh deleted file mode 100755 index c97a17c4b33..00000000000 --- a/third-party-licenses.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -mvn org.codehaus.mojo:license-maven-plugin:aggregate-add-third-party -Dlicense.includedScopes=compile -pl sonar-application -am - -cat target/generated-sources/license/THIRD-PARTY.txt diff --git a/travis.sh b/travis.sh index 7c1acf457ea..eaf9879c83c 100755 --- a/travis.sh +++ b/travis.sh @@ -23,22 +23,6 @@ function installJdk8 { export PATH=$JAVA_HOME/bin:$PATH } -# -# Maven 3.2.5 is installed by default on Travis. Maven 3.5 is preferred. -# -function installMaven { - echo "Setup Maven" - mkdir -p ~/maven - pushd ~/maven > /dev/null - if [ ! -d "apache-maven-3.5" ]; then - echo "Download Maven 3.5" - curl -sSL https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz | tar zx -C ~/maven - fi - popd > /dev/null - export M2_HOME=~/maven/apache-maven-3.5.0 - export PATH=$M2_HOME/bin:$PATH -} - function installNode { set +u source ~/.nvm/nvm.sh && nvm install 8 @@ -46,61 +30,6 @@ function installNode { } # -# Replaces the version defined in sources, usually x.y-SNAPSHOT, -# by a version identifying the build. -# The build version is composed of 4 fields, including the semantic version and -# the build number provided by Travis. -# -# Exported variables: -# - INITIAL_VERSION: version as defined in pom.xml -# - BUILD_VERSION: version including the build number -# - PROJECT_VERSION: target Maven version. The name of this variable is important because -# it's used by QA when extracting version from Artifactory build info. -# -# Example of SNAPSHOT -# INITIAL_VERSION=6.3-SNAPSHOT -# BUILD_VERSION=6.3.0.12345 -# PROJECT_VERSION=6.3.0.12345 -# -# Example of RC -# INITIAL_VERSION=6.3-RC1 -# BUILD_VERSION=6.3.0.12345 -# PROJECT_VERSION=6.3-RC1 -# -# Example of GA -# INITIAL_VERSION=6.3 -# BUILD_VERSION=6.3.0.12345 -# PROJECT_VERSION=6.3 -# -function fixBuildVersion { - export INITIAL_VERSION=`maven_expression "project.version"` - - # remove suffix -SNAPSHOT or -RC - without_suffix=`echo $INITIAL_VERSION | sed "s/-.*//g"` - - IFS=$'.' - fields_count=`echo $without_suffix | wc -w` - unset IFS - if [ $fields_count -lt 3 ]; then - export BUILD_VERSION="$without_suffix.0.$TRAVIS_BUILD_NUMBER" - else - export BUILD_VERSION="$without_suffix.$TRAVIS_BUILD_NUMBER" - fi - - if [[ "${INITIAL_VERSION}" == *"-SNAPSHOT" ]]; then - # SNAPSHOT - export PROJECT_VERSION=$BUILD_VERSION - mvn org.codehaus.mojo:versions-maven-plugin:2.2:set -DnewVersion=$PROJECT_VERSION -DgenerateBackupPoms=false -B -e - else - # not a SNAPSHOT: milestone, RC or GA - export PROJECT_VERSION=$INITIAL_VERSION - fi - - echo "Build Version : $BUILD_VERSION" - echo "Project Version: $PROJECT_VERSION" -} - -# # Configure Maven settings and install some script utilities # function configureTravis { @@ -134,14 +63,10 @@ case "$TARGET" in BUILD) installJdk8 - installMaven installNode - fixBuildVersion - - # Minimal Maven settings - export MAVEN_OPTS="-Xmx1G -Xms128m" - MAVEN_ARGS="-T 1C -Dmaven.test.redirectTestOutputToFile=false -Dsurefire.useFile=false -B -e -V -DbuildVersion=$BUILD_VERSION -Dtests.es.logger.level=WARN -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" + # Used by Next + export INITIAL_VERSION=$(cat gradle.properties | grep version | awk -F= '{print $2}') # Fetch all commit history so that SonarQube has exact blame information # for issue auto-assignment @@ -153,27 +78,22 @@ BUILD) if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo 'Build and analyze master' - mvn org.jacoco:jacoco-maven-plugin:prepare-agent deploy \ - $MAVEN_ARGS \ - -Pdeploy-sonarsource,release - - mvn sonar:sonar \ - -Dsonar.host.url=$SONAR_HOST_URL \ - -Dsonar.login=$SONAR_TOKEN \ - -Dsonar.projectVersion=$INITIAL_VERSION \ - -Dsonar.analysis.buildNumber=$BUILD_NUMBER \ - -Dsonar.analysis.pipeline=$BUILD_NUMBER \ - -Dsonar.analysis.sha1=$GIT_COMMIT \ - -Dsonar.analysis.repository=$TRAVIS_REPO_SLUG + ./gradlew --no-daemon --console plain \ + -DbuildNumber=$BUILD_NUMBER \ + build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \ + -Dsonar.host.url=$SONAR_HOST_URL \ + -Dsonar.login=$SONAR_TOKEN \ + -Dsonar.projectVersion=$INITIAL_VERSION \ + -Dsonar.analysis.buildNumber=$BUILD_NUMBER \ + -Dsonar.analysis.pipeline=$BUILD_NUMBER \ + -Dsonar.analysis.sha1=$GIT_COMMIT \ + -Dsonar.analysis.repository=$TRAVIS_REPO_SLUG elif [[ "$TRAVIS_BRANCH" == "branch-"* ]] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo 'Build release branch' - - mvn org.jacoco:jacoco-maven-plugin:prepare-agent deploy \ - $MAVEN_ARGS \ - -Pdeploy-sonarsource,release - - mvn sonar:sonar \ + ./gradlew --no-daemon --console plain \ + -DbuildNumber=$BUILD_NUMBER \ + build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \ -Dsonar.host.url=$SONAR_HOST_URL \ -Dsonar.login=$SONAR_TOKEN \ -Dsonar.branch.name=$TRAVIS_BRANCH \ @@ -185,13 +105,9 @@ BUILD) elif [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ -n "${GITHUB_TOKEN:-}" ]; then echo 'Build and analyze internal pull request' - - mvn org.jacoco:jacoco-maven-plugin:prepare-agent deploy \ - $MAVEN_ARGS \ - -Dsource.skip=true \ - -Pdeploy-sonarsource,release - - mvn sonar:sonar \ + ./gradlew --no-daemon --console plain \ + -DbuildNumber=$BUILD_NUMBER \ + build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \ -Dsonar.host.url=$SONAR_HOST_URL \ -Dsonar.login=$SONAR_TOKEN \ -Dsonar.analysis.buildNumber=$BUILD_NUMBER \ @@ -207,10 +123,10 @@ BUILD) else echo 'Build feature branch or external pull request' - mvn deploy $MAVEN_ARGS -Pdeploy-sonarsource,release + ./gradlew --no-daemon --console plain \ + -DbuildNumber=$BUILD_NUMBER -Prelease=true \ + build artifactoryPublish fi - - ./run-integration-tests.sh "Lite" "" ;; WEB_TESTS) |