diff --git a/its/out.dump b/its/out.dump
deleted file mode 100644
index e46bf45..0000000
--- a/its/out.dump
+++ /dev/null
@@ -1,288 +0,0 @@
-#Generated by sonar-runner
-#Tue Nov 25 23:10:48 CET 2014
-2_1.sonarRunner.dumpToFile=out.dump
-env.DESKTOP_SESSION=default
-file.encoding.pkg=sun.io
-1_1.sonar.host.url=http\://localhost\:42856/sonar
-2_1.sonar.links.issue=
-1_1.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-1_2.sonar.sources=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a2/src/main
-1_2.sonarRunner.dumpToFile=out.dump
-2_1.sonar.sources=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b1/src/main
-java.home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre
-2.sonar.links.ci=
-sonar.modules=1,2
-sonar.projectKey=com.sonarsource.it.samples\:multi-modules-sample
-1_2.sonar.links.homepage=
-2.sonar.projectVersion=1.0-SNAPSHOT
-sonar.embeddedDatabase.port=45042
-env.DISPLAY=\:0
-env.XDG_VTNR=1
-2.sonar.links.homepage=
-2_1.sonar.links.ci=
-java.awt.headless=true
-classworlds.conf=/usr/share/maven/bin/m2.conf
-2_2.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b2/target/sonar
-java.endorsed.dirs=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/endorsed
-2.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/target/sonar
-env.LOGNAME=julien
-env.GS_LIB=
-1_1.sonar.links.issue=
-2_1.sonar.jdbc.driverClassName=org.h2.Driver
-env.XDG_SEAT=seat0
-2_1.sonar.host.url=http\://localhost\:42856/sonar
-1.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-env.KDE_SESSION_UID=1000
-env.SESSION_MANAGER=local/unix\:@/tmp/.ICE-unix/1822,unix/unix\:/tmp/.ICE-unix/1822
-2.sonar.moduleKey=com.sonarsource.it.samples\:module_b
-env.KDEDIRS=/usr
-sun.os.patch.level=unknown
-2.sonar.links.scm=
-java.vendor.url=http\://java.oracle.com/
-env.SONAR_IT_SOURCES=/home/julien/Prog/Tests/it-sources/
-1_1.sonar.jdbc.driverClassName=org.h2.Driver
-1_2.sonar.projectVersion=1.0-SNAPSHOT
-java.version=1.7.0_71
-2_1.sonar.jdbc.password=sonar
-env.ANDROID_HOME=/home/julien/Prog/Softs/android-sdk/
-env.MAVEN_OPTS=-Djava.awt.headless\=true
-sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-2.sonar.host.url=http\://localhost\:42856/sonar
-java.vendor.url.bug=http\://bugreport.sun.com/bugreport/
-1.sonar.language=java
-env.XDG_MENU_PREFIX=kde4-
-1.sonar.jdbc.dialect=h2
-sonarRunner.app=Maven
-env.XDG_DATA_DIRS=/usr/share/kde-settings/kde-profile/default/share\:/usr/local/share\:/usr/share
-1_1.sonar.links.homepage=
-1.sonar.projectVersion=1.0-SNAPSHOT
-1.sonar.projectName=Module A
-2.sonar.jdbc.username=sonar
-user.name=julien
-env.LANG=fr_FR.UTF-8
-1.sonar.links.homepage=
-env.CVS_RSH=ssh
-sun.io.unicode.encoding=UnicodeLittle
-sun.jnu.encoding=UTF-8
-env.DBUS_SESSION_BUS_ADDRESS=unix\:abstract\=/tmp/dbus-E0wo0ow6Oo,guid\=d6021db9e576f37abae50ab554743137
-1_1.sonar.moduleKey=com.sonarsource.it.samples\:module_a1
-java.runtime.name=OpenJDK Runtime Environment
-1_1.sonar.links.scm=
-env.SSH_ASKPASS=/usr/bin/ksshaskpass
-sonar.projectName=Sonar \:\: Integration Tests \:\: Multi-modules Sample
-java.specification.name=Java Platform API Specification
-sonar.links.ci=
-user.timezone=
-env.LESSOPEN=||/usr/bin/lesspipe.sh %s
-1.sonar.jdbc.username=sonar
-1.sonar.sources=
-2_2.sonar.embeddedDatabase.port=45042
-path.separator=\:
-1_1.sonar.projectVersion=1.0-SNAPSHOT
-2_1.sonar.embeddedDatabase.port=45042
-sonar.jdbc.dialect=h2
-2.sonarRunner.dumpToFile=out.dump
-env.XMODIFIERS=@im\=none
-file.encoding=UTF-8
-1_2.sonar.jdbc.username=sonar
-env.HOME=/home/julien
-sun.java.command=org.codehaus.plexus.classworlds.launcher.Launcher org.codehaus.mojo\:sonar-maven-plugin\:2.5-SNAPSHOT\:sonar -B -e -f /home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/pom.xml -Dsonar.jdbc.password\=sonar -Dsonar.host.url\=http\://localhost\:42856/sonar -Dsonar.embeddedDatabase.port\=45042 -Dsonar.jdbc.dialect\=h2 -Dsonar.jdbc.username\=sonar -DsonarRunner.dumpToFile\=out.dump -Dsonar.jdbc.url\=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar -Dsonar.jdbc.driverClassName\=org.h2.Driver
-sonar.jdbc.driverClassName=org.h2.Driver
-1.sonar.modules=1_1,1_2
-1_1.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a1/target
-1_1.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-sonarRunner.appVersion=3.1.1
-2.sonar.links.scm_dev=
-1.sonar.links.issue=
-env.GTK_RC_FILES=/etc/gtk/gtkrc\:/home/julien/.gtkrc\:/home/julien/.kde/share/config/gtkrc
-2_2.sonar.projectName=Sub-module B2
-sonar.moduleKey=com.sonarsource.it.samples\:multi-modules-sample
-sonar.links.scm=
-env.HOSTNAME=laptopjh.sonarsource.com
-2_2.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-1_1.sonar.jdbc.username=sonar
-1_2.sonar.links.ci=
-java.io.tmpdir=/tmp
-sonar.links.issue=
-user.language=fr
-env.HISTCONTROL=ignoredups
-line.separator=\n
-2.sonar.jdbc.dialect=h2
-sonar.host.url=http\://localhost\:42856/sonar
-2_2.sonar.sources=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b2/src/main
-1_1.sonar.language=java
-2_1.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-env.SSH_AGENT_PID=1706
-env.HISTSIZE=1000
-2_2.sonar.jdbc.username=sonar
-2_2.sonarRunner.dumpToFile=out.dump
-1_2.sonar.links.scm_dev=
-java.vm.info=mixed mode
-java.vm.specification.name=Java Virtual Machine Specification
-sonar.jdbc.password=sonar
-env.M2_HOME=/usr/share/maven
-2_2.sonar.links.homepage=
-2.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-2_1.sonar.jdbc.dialect=h2
-sonar.projectVersion=1.0-SNAPSHOT
-2_1.sonar.jdbc.username=sonar
-1_2.sonar.moduleKey=com.sonarsource.it.samples\:module_a2
-1_2.sonar.links.scm=
-1_2.sonar.host.url=http\://localhost\:42856/sonar
-1.sonar.links.scm_dev=
-1_1.sonar.links.scm_dev=
-sonar.links.homepage=
-1.sonar.jdbc.driverClassName=org.h2.Driver
-2.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b
-1_2.sonar.projectName=Sub-module A2
-2_1.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b1/target
-1_2.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-java.awt.printerjob=sun.print.PSPrinterJob
-env.DM_CONTROL=/var/run/xdmctl
-1_2.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a2/target
-2_2.sonar.projectVersion=1.0-SNAPSHOT
-2_2.sonar.links.ci=
-sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/target
-2_2.sonar.links.issue=
-2_1.sonar.language=java
-1_2.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a2
-2.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-os.name=Linux
-2_1.sonar.links.homepage=
-java.specification.vendor=Oracle Corporation
-env.TERM=dumb
-java.vm.name=OpenJDK 64-Bit Server VM
-1_1.sonar.jdbc.dialect=h2
-1_1.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a1/target/sonar
-env.QT_IM_MODULE=xim
-sonar.mojoUseRunner=true
-env.KDE_SESSION_VERSION=4
-java.library.path=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64/server\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../lib/amd64\:/usr/java/jdk1.6.0_45/jre/lib/amd64/server\:/usr/java/jdk1.6.0_45/jre/lib/amd64\:/usr/java/jdk1.6.0_45/jre/../lib/amd64\:/usr/java/packages/lib/amd64\:/usr/lib64\:/lib64\:/lib\:/usr/lib
-env.PATH=/home/julien/Prog/Softs/play-2.2.1/\:/usr/lib64/qt-3.3/bin\:/usr/local/bin\:/usr/bin\:/bin\:/usr/games\:/usr/local/sbin\:/usr/sbin\:/home/julien/Prog/Softs/mavens/\:/home/julien/Prog/Softs/sbt/bin\:/home/julien/Prog/Softs/groovy/bin\:/home/julien/Prog/Softs/android-sdk//tools\:/home/julien/Prog/Softs/android-sdk//platform-tools\:/home/julien/Prog/Softs/ant/bin/\:/home/julien/Prog/sonar-developer-toolset/git/\:/home/julien/.local/bin\:/home/julien/bin
-2.sonar.language=java
-2_2.sonar.links.scm_dev=
-1_2.sonar.links.issue=
-2.sonar.projectName=Module B
-2_2.sonar.jdbc.driverClassName=org.h2.Driver
-java.class.version=51.0
-env.SHLVL=3
-env.LD_LIBRARY_PATH=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64/server\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/../lib/amd64\:/usr/java/jdk1.6.0_45/jre/lib/amd64/server\:/usr/java/jdk1.6.0_45/jre/lib/amd64\:/usr/java/jdk1.6.0_45/jre/../lib/amd64
-2.sonar.modules=2_1,2_2
-2_1.sonar.moduleKey=com.sonarsource.it.samples\:module_b1
-2_2.sonar.host.url=http\://localhost\:42856/sonar
-1_2.sonar.jdbc.driverClassName=org.h2.Driver
-2_1.sonar.links.scm=
-sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-2_2.sonar.jdbc.dialect=h2
-2_1.sonar.projectVersion=1.0-SNAPSHOT
-env.KDE_MULTIHEAD=false
-2_1.sonar.links.scm_dev=
-env.SWT_GTK3=0
-2.sonar.sources=
-1_1.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a1
-1.sonar.links.ci=
-1.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/target
-sun.boot.library.path=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/amd64
-2_2.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b2/target
-env.PLAY_HOME=/home/julien/Prog/Softs/play-2.2.1/
-1.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a
-sun.management.compiler=HotSpot 64-Bit Tiered Compilers
-java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
-sonar.language=java
-env.USER=julien
-2.sonar.embeddedDatabase.port=45042
-env.GTK_IM_MODULE=gtk-im-context-simple
-env.ORCHESTRATOR_CONFIG_URL=file\:///home/julien/Prog/Tests/orchestrator.properties
-1_1.sonarRunner.dumpToFile=out.dump
-1.sonar.embeddedDatabase.port=45042
-2.sonar.links.issue=
-1_2.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-env.QT_PLUGIN_PATH=/home/julien/.kde/lib64/kde4/plugins/\:/usr/lib64/kde4/plugins/
-java.vm.specification.version=1.7
-env.KDE_IS_PRELINKED=1
-1_2.sonar.jdbc.dialect=h2
-1_1.sonar.sources=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a1/src/main
-1_2.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/module_a2/target/sonar
-env.NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
-awt.toolkit=sun.awt.X11.XToolkit
-sun.cpu.isalist=
-2.sonar.projectBuildDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/target
-java.ext.dirs=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/ext\:/usr/java/packages/lib/ext
-os.version=3.17.3-200.fc20.x86_64
-1.sonar.host.url=http\://localhost\:42856/sonar
-env.XDG_CURRENT_DESKTOP=KDE
-user.home=/home/julien
-sonarRunner.dumpToFile=out.dump
-java.vm.vendor=Oracle Corporation
-env.KDE_FULL_SESSION=true
-env.JAVA_HOME=/usr/lib/jvm/java
-env.XDG_SESSION_ID=1
-env.XAUTHORITY=/tmp/kde-julien/xauth-1000-_0
-sonar.jdbc.username=sonar
-user.dir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven
-env.WINDOWPATH=1
-env.XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt
-env.MAIL=/var/spool/mail/julien
-2.sonar.jdbc.password=sonar
-1.sonar.moduleKey=com.sonarsource.it.samples\:module_a
-env.PWD=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven
-env.LIBOVERLAY_SCROLLBAR=0
-sonar.sourceEncoding=UTF-8
-sun.cpu.endian=little
-env.GTK2_RC_FILES=/etc/gtk-2.0/gtkrc\:/home/julien/.gtkrc-2.0\:/home/julien/.gtkrc-2.0-kde4\:/home/julien/.kde/share/config/gtkrc-2.0
-env.QTLIB=/usr/lib64/qt-3.3/lib
-java.vm.version=24.65-b04
-1_2.sonar.language=java
-org.slf4j.simpleLogger.defaultLogLevel=info
-java.class.path=/usr/share/maven/boot/plexus-classworlds.jar
-2_2.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-env.XCURSOR_THEME=Adwaita
-1.sonar.jdbc.password=sonar
-env.QTDIR=/usr/lib64/qt-3.3
-os.arch=amd64
-maven.build.version=Apache Maven 3.1.1 (NON-CANONICAL_2013-11-08_14-32_mockbuild; 2013-11-08 15\:32\:41+0100)
-2_2.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b2
-sun.java.launcher=SUN_STANDARD
-env.QT_GRAPHICSSYSTEM_CHECKED=1
-1_2.sonar.jdbc.password=sonar
-sonarRunner.maskRules=MASK|org.slf4j.LoggerFactory,UNMASK|org.slf4j.Logger,UNMASK|org.slf4j.ILoggerFactory,MASK|org.slf4j.,MASK|ch.qos.logback.,MASK|org.sonar.,MASK|com.google.common,UNMASK|
-env.IMSETTINGS_INTEGRATE_DESKTOP=yes
-1.sonar.links.scm=
-sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/target/sonar
-2_1.sonar.maven.projectDependencies=[{"k"\:"junit\:junit","v"\:"3.8.1","s"\:"test","d"\:[]}]
-java.vm.specification.vendor=Oracle Corporation
-1.sonarRunner.dumpToFile=out.dump
-sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources
-file.separator=/
-2_1.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b1/target/sonar
-2_2.sonar.moduleKey=com.sonarsource.it.samples\:module_b2
-2_2.sonar.links.scm=
-java.runtime.version=1.7.0_71-mockbuild_2014_10_15_17_02-b00
-1.sonar.working.directory=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_a/target/sonar
-2_1.sonar.projectName=Sub-module B1
-2.sonar.jdbc.driverClassName=org.h2.Driver
-sun.boot.class.path=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/resources.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rt.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/sunrsasign.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/jsse.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/jce.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/charsets.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/rhino.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/lib/jfr.jar\:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.0.fc20.x86_64/jre/classes
-env.XDM_MANAGED=method\=classic,auto
-env.SSH_AUTH_SOCK=/tmp/ssh-za9000htclwL/agent.1543
-2_2.sonar.language=java
-1_1.sonar.links.ci=
-env.XDG_RUNTIME_DIR=/run/user/1000
-maven.version=3.1.1
-1_1.sonar.jdbc.password=sonar
-env.QTINC=/usr/lib64/qt-3.3/include
-user.country=FR
-env.SHELL=/bin/bash
-maven.home=/usr/share/maven
-1_2.sonar.embeddedDatabase.port=45042
-1_1.sonar.projectName=Sub-module A1
-1_1.sonar.embeddedDatabase.port=45042
-java.vendor=Oracle Corporation
-2_2.sonar.jdbc.password=sonar
-sonar.links.scm_dev=
-env.GPG_AGENT_INFO=/home/julien/.gnupg/S.gpg-agent\:1731\:1
-2_1.sonar.projectBaseDir=/home/julien/Prog/Projects/its/sonar-tests-core/it-sonar-maven/projects/maven/multi-modules-override-sources/module_b/module_b1
-env.IMSETTINGS_MODULE=none
-sonar.sources=
-java.specification.version=1.7
-1.sonar.jdbc.url=jdbc\:h2\:tcp\://localhost\:45042/sonar;USER\=sonar;PASSWORD\=sonar
-sun.arch.data.model=64
diff --git a/its/projects/maven/maven-global-properties/pom.xml b/its/projects/maven/maven-global-properties/pom.xml
new file mode 100644
index 0000000..f3d6882
--- /dev/null
+++ b/its/projects/maven/maven-global-properties/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+ com.sonarsource.it.samples
+ sonar-host-url
+ 1.0-SNAPSHOT
+
+
+ http://dummy-url.org
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.5
+ 1.5
+
+
+
+
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/its/src/test/java/com/sonar/maven/it/ItUtils.java b/its/src/test/java/com/sonar/maven/it/ItUtils.java
index 4a0e68a..3f3b8cc 100644
--- a/its/src/test/java/com/sonar/maven/it/ItUtils.java
+++ b/its/src/test/java/com/sonar/maven/it/ItUtils.java
@@ -19,8 +19,21 @@
*/
package com.sonar.maven.it;
-import java.io.File;
import org.apache.commons.io.FileUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import java.io.File;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Map;
public final class ItUtils {
@@ -49,4 +62,38 @@ public static File locateProjectPom(String projectName) {
return new File(locateProjectDir(projectName), "pom.xml");
}
+ /**
+ * Creates a settings xml with a sonar profile, containing all the given properties
+ */
+ public static String createSettingsXml(Map props) throws Exception {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document doc = docBuilder.newDocument();
+
+ Element settings = doc.createElement("settings");
+ Element profiles = doc.createElement("profiles");
+ Element profile = doc.createElement("profile");
+
+ Element id = doc.createElement("id");
+ id.setTextContent("sonar");
+
+ Element properties = doc.createElement("properties");
+
+ for (Map.Entry e : props.entrySet()) {
+ Element el = doc.createElement(e.getKey());
+ el.setTextContent(e.getValue());
+ properties.appendChild(el);
+ }
+
+ profile.appendChild(id);
+ profile.appendChild(properties);
+ profiles.appendChild(profile);
+ settings.appendChild(profiles);
+ doc.appendChild(settings);
+
+ Writer writer = new StringWriter();
+ Transformer tf = TransformerFactory.newInstance().newTransformer();
+ tf.transform(new DOMSource(doc), new StreamResult(writer));
+ return writer.toString();
+ }
+
}
diff --git a/its/src/test/java/com/sonar/maven/it/suite/MavenTest.java b/its/src/test/java/com/sonar/maven/it/suite/MavenTest.java
index c64185d..c2eb536 100644
--- a/its/src/test/java/com/sonar/maven/it/suite/MavenTest.java
+++ b/its/src/test/java/com/sonar/maven/it/suite/MavenTest.java
@@ -19,15 +19,20 @@
*/
package com.sonar.maven.it.suite;
+import org.apache.commons.io.FileUtils;
+import com.sonar.orchestrator.build.BuildRunner;
import com.sonar.maven.it.ItUtils;
import com.sonar.orchestrator.build.BuildResult;
import com.sonar.orchestrator.build.MavenBuild;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
+
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Rule;
@@ -36,7 +41,6 @@
import org.sonar.wsclient.Sonar;
import org.sonar.wsclient.services.Resource;
import org.sonar.wsclient.services.ResourceQuery;
-
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
@@ -51,6 +55,43 @@ public void deleteData() {
orchestrator.resetData();
}
+ @Test
+ /**
+ * See MSONAR-129
+ */
+ public void useUserPropertiesGlobalConfig() throws Exception {
+ BuildRunner runner = new BuildRunner(orchestrator.getConfiguration(), orchestrator.getDatabase());
+ MavenBuild build = MavenBuild.create(ItUtils.locateProjectPom("maven/maven-only-test-dir"))
+ .setGoals(cleanSonarGoal());
+
+ File settingsXml = temp.newFile();
+ Map props = orchestrator.getDatabase().getSonarProperties();
+ props.put("sonar.host.url", orchestrator.getServer().getUrl());
+ FileUtils.write(settingsXml, ItUtils.createSettingsXml(props));
+
+ build.addArgument("--settings=" + settingsXml.getAbsolutePath());
+ build.addArgument("-Psonar");
+ // we build without sonarqube server settings, it will need to fetch it from the profile defined in the settings xml file
+ BuildResult result = runner.run(null, build);
+
+ assertThat(result.getLogs()).contains(orchestrator.getServer().getUrl());
+ }
+
+ @Test
+ /**
+ * See MSONAR-129
+ */
+ public void supportSonarHostURLParam() {
+ BuildRunner runner = new BuildRunner(orchestrator.getConfiguration(), orchestrator.getDatabase());
+ MavenBuild build = MavenBuild.create(ItUtils.locateProjectPom("maven/maven-global-properties"))
+ .setGoals(cleanSonarGoal());
+
+ BuildResult result = runner.runQuietly(null, build);
+
+ assertThat(result.isSuccess()).isFalse();
+ assertThat(result.getLogs()).contains("http://dummy-url.org");
+ }
+
@Test
public void shouldSupportJarWithoutSources() {
MavenBuild build = MavenBuild.create(ItUtils.locateProjectPom("maven/project-with-module-without-sources"))
@@ -68,7 +109,7 @@ public void shouldSupportJarWithoutSources() {
Resource subProject = orchestrator.getServer().getWsClient().find(ResourceQuery.create("com.sonarsource.it.samples.project-with-module-without-sources:without-sources"));
assertThat(subProject).isNotNull();
}
-
+
/**
* See SONAR-594
*/
diff --git a/src/main/java/org/codehaus/mojo/sonar/SonarMojo.java b/src/main/java/org/codehaus/mojo/sonar/SonarMojo.java
index 16dfe1a..7f94a38 100644
--- a/src/main/java/org/codehaus/mojo/sonar/SonarMojo.java
+++ b/src/main/java/org/codehaus/mojo/sonar/SonarMojo.java
@@ -67,12 +67,6 @@ public class SonarMojo
@Parameter( defaultValue = "${session}", readonly = true )
private MavenSession session;
- /**
- * Sonar host URL.
- */
- @Parameter( property = "sonar.host.url", defaultValue = "http://localhost:9000", alias = "sonar.host.url" )
- private String sonarHostURL;
-
/**
* Set this to 'true' to skip analysis.
*
diff --git a/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java b/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java
index 530179e..75d2a60 100644
--- a/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java
+++ b/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java
@@ -73,9 +73,6 @@ public void execute()
{
try
{
- Properties props = collectProperties();
- checkDumpToFile( props );
-
applyMasks();
runner.start();
serverVersion = runner.serverVersion();
@@ -99,7 +96,7 @@ public void execute()
runner.setGlobalProperty( "sonar.verbose", "true" );
}
- runner.runAnalysis( props );
+ runner.runAnalysis( collectProperties() );
runner.stop();
}
catch ( Exception e )
diff --git a/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactory.java b/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactory.java
index 2885ca1..731b1d3 100644
--- a/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactory.java
+++ b/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactory.java
@@ -1,10 +1,11 @@
package org.codehaus.mojo.sonar.bootstrap;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.rtinfo.RuntimeInformation;
-
-import org.sonar.runner.api.LogOutput;
import org.sonar.runner.api.EmbeddedRunner;
-import org.apache.maven.execution.MavenSession;
+import org.sonar.runner.api.LogOutput;
+
+import java.util.Properties;
public class RunnerFactory
{
@@ -30,7 +31,9 @@ public EmbeddedRunner create()
{
EmbeddedRunner runner = EmbeddedRunner.create( logOutput );
runner.setApp( "Maven", runtimeInformation.getMavenVersion() );
- runner.addGlobalProperties( session.getSystemProperties() );
+
+ runner.addGlobalProperties( createGlobalProperties() );
+
// Secret property to manage backward compatibility on SQ side (see ProjectScanContainer)
runner.setGlobalProperty( "sonar.mojoUseRunner", "true" );
if ( debugEnabled )
@@ -40,4 +43,13 @@ public EmbeddedRunner create()
return runner;
}
+
+ private Properties createGlobalProperties()
+ {
+ Properties p = new Properties();
+ p.putAll( session.getTopLevelProject().getProperties() );
+ p.putAll( session.getSystemProperties() );
+ p.putAll( session.getUserProperties() );
+ return p;
+ }
}
diff --git a/src/test/java/org/codehaus/mojo/sonar/SonarMojoTest.java b/src/test/java/org/codehaus/mojo/sonar/SonarMojoTest.java
index 124e0b6..af398cb 100644
--- a/src/test/java/org/codehaus/mojo/sonar/SonarMojoTest.java
+++ b/src/test/java/org/codehaus/mojo/sonar/SonarMojoTest.java
@@ -45,7 +45,6 @@
import java.util.Properties;
import static org.mockito.Mockito.atLeastOnce;
-
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;
@@ -82,7 +81,10 @@ public void executeMojo()
throws Exception
{
File baseDir = executeProject( "sample-project", temp.newFile() );
- assertPropsContains( entry( "sonar.projectKey", "org.codehaus.sonar:sample-project" ) );
+
+ // passed in the properties of the profile and project
+ assertGlobalPropsContains( entry( "sonar.host.url1", "http://myserver:9000" ) );
+ assertGlobalPropsContains( entry( "sonar.host.url2", "http://myserver:9000" ) );
}
@Test
@@ -209,6 +211,12 @@ private void assertPropsContains( MapAssert.Entry... entries )
assertThat( readProps( "target/dump.properties" ) ).includes( entries );
}
+ private void assertGlobalPropsContains( MapAssert.Entry... entries )
+ throws FileNotFoundException, IOException
+ {
+ assertThat( readProps( "target/dump.properties.global" ) ).includes( entries );
+ }
+
private Properties readProps( String filePath )
throws FileNotFoundException, IOException
{
diff --git a/src/test/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactoryTest.java b/src/test/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactoryTest.java
new file mode 100644
index 0000000..cb39d8f
--- /dev/null
+++ b/src/test/java/org/codehaus/mojo/sonar/bootstrap/RunnerFactoryTest.java
@@ -0,0 +1,77 @@
+package org.codehaus.mojo.sonar.bootstrap;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.rtinfo.RuntimeInformation;
+import org.junit.Before;
+import org.junit.Test;
+import org.sonar.runner.api.EmbeddedRunner;
+import org.sonar.runner.api.LogOutput;
+
+import java.util.Properties;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.fest.assertions.MapAssert.entry;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class RunnerFactoryTest
+{
+ private LogOutput logOutput;
+
+ private RuntimeInformation runtimeInformation;
+
+ private MavenSession mavenSession;
+
+ private MavenProject rootProject;
+
+ @Before
+ public void setUp()
+ {
+ logOutput = mock( LogOutput.class );
+ runtimeInformation = mock( RuntimeInformation.class );
+ mavenSession = mock( MavenSession.class );
+ rootProject = mock( MavenProject.class );
+
+ Properties system = new Properties();
+ system.put( "system", "value" );
+ Properties user = new Properties();
+ user.put( "user", "value" );
+ Properties root = new Properties();
+ root.put( "root", "value" );
+
+ when( runtimeInformation.getMavenVersion() ).thenReturn( "1.0" );
+ when( mavenSession.getSystemProperties() ).thenReturn( system );
+ when( mavenSession.getUserProperties() ).thenReturn( user );
+ when( rootProject.getProperties() ).thenReturn( root );
+ when( mavenSession.getTopLevelProject() ).thenReturn( rootProject );
+ }
+
+ @Test
+ public void testProperties()
+ {
+ RunnerFactory factory = new RunnerFactory( logOutput, false, runtimeInformation, mavenSession );
+ EmbeddedRunner runner = factory.create();
+ verify( mavenSession ).getUserProperties();
+ verify( mavenSession ).getSystemProperties();
+ verify( rootProject ).getProperties();
+
+ assertThat( runner.globalProperties() ).includes( entry( "system", "value" ), entry( "user", "value" ),
+ entry( "root", "value" ) );
+ assertThat( runner.globalProperties() ).includes( entry( "sonar.mojoUseRunner", "true" ) );
+ }
+
+ @Test
+ public void testDebug()
+ {
+ RunnerFactory factoryDebug = new RunnerFactory( logOutput, true, runtimeInformation, mavenSession );
+ RunnerFactory factory = new RunnerFactory( logOutput, false, runtimeInformation, mavenSession );
+
+ EmbeddedRunner runnerDebug = factoryDebug.create();
+ EmbeddedRunner runner = factory.create();
+
+ assertThat( runnerDebug.globalProperties() ).includes( entry( "sonar.verbose", "true" ) );
+ assertThat( runner.globalProperties() ).excludes( entry( "sonar.verbose", "true" ) );
+ }
+}
diff --git a/src/test/resources/org/codehaus/mojo/sonar/SonarMojoTest/sample-project/pom.xml b/src/test/resources/org/codehaus/mojo/sonar/SonarMojoTest/sample-project/pom.xml
index 298eb6c..ecf805d 100644
--- a/src/test/resources/org/codehaus/mojo/sonar/SonarMojoTest/sample-project/pom.xml
+++ b/src/test/resources/org/codehaus/mojo/sonar/SonarMojoTest/sample-project/pom.xml
@@ -10,6 +10,7 @@
target/dump.properties
+ http://myserver:9000
@@ -31,9 +32,19 @@
sonar-maven-plugin
-
-
+
+
+
+ sonar
+
+ true
+
+
+ http://myserver:9000
+
+
+