Onboarding build optimization incl Qual Control

Sonar fixes, incremental build enhancements and Quality control mechanism integration.

Change-Id: I118d7fc0cc50c1eddb94137310c00afaaa3aaffb
Issue-ID: SDC-1189
Signed-off-by: GAUTAMS <gautams@amdocs.com>
diff --git a/openecomp-be/pom.xml b/openecomp-be/pom.xml
index 786ef92..22c23d4 100644
--- a/openecomp-be/pom.xml
+++ b/openecomp-be/pom.xml
@@ -49,65 +49,215 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>${mvn.compiler.version}</version>
                 <inherited>true</inherited>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <skipMain>${skipMainSourceCompile}</skipMain>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>default-testCompile</id>
+                        <configuration>
+                            <skip>${skipTestSourceCompile}</skip>
+                        </configuration>
+                    </execution>
+                </executions>
                 <configuration>
                     <source>${java.source}</source>
                     <target>${java.target}</target>
-                    <excludes>
-                        <exclude>**/package-info.java</exclude>
-                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.openecomp.sdc.onboarding</groupId>
+                <artifactId>artifact-copy-plugin</artifactId>
+                <version>${project.version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>init-artifact-helper</goal>
+                            <goal>copy-helper</goal>
+                            <goal>calibrate-artifact-helper</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <groupId>org.openecomp.sdc</groupId>
+                    <artifactId>build-data-installer</artifactId>
+                    <version>${project.version}</version>
+                    <targetLocation>build-data-helper</targetLocation>
+                    <name>build-data-helper-${project.version}.jar</name>
+                    <artifactHelper>
+                        <project>${project}</project>
+                    </artifactHelper>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>id1</id>
+                        <goals>
+                            <goal>get</goal>
+                        </goals>
+                        <phase>pre-clean</phase>
+                        <configuration>
+                            <artifactId>build-data-helper</artifactId>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>id2</id>
+                        <goals>
+                            <goal>get</goal>
+                        </goals>
+                        <phase>pre-clean</phase>
+                        <configuration>
+                            <artifactId>build-data-installer</artifactId>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <groupId>org.openecomp.sdc</groupId>
+                    <version>${project.version}</version>
+                    <skip>${skipGet}</skip>
                 </configuration>
             </plugin>
             <plugin>
                 <groupId>org.openecomp.sdc.onboarding</groupId>
                 <artifactId>compile-helper-plugin</artifactId>
                 <version>${project.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.openecomp.sdc</groupId>
+                        <artifactId>build-data-helper</artifactId>
+                        <version>${project.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.openecomp.sdc.onboarding</groupId>
+                        <artifactId>pmd-helper-plugin</artifactId>
+                        <version>${project.version}</version>
+                    </dependency>
+                </dependencies>
                 <executions>
                     <execution>
                         <goals>
-                            <goal>pre-compile-helper</goal>
-                            <goal>pre-test-compile-helper</goal>
-                            <goal>post-compile-helper</goal>
-                            <goal>post-test-run-helper</goal>
                             <goal>init-helper</goal>
+                            <goal>pre-compile-helper</goal>
+                            <goal>post-compile-helper</goal>
+                            <goal>pre-test-compile-helper</goal>
+                            <goal>post-test-run-helper</goal>
                         </goals>
                     </execution>
                 </executions>
                 <configuration>
                     <excludePackaging>pom</excludePackaging>
                     <excludeDependencies>test,runtime</excludeDependencies>
-                    <staleThreshold>10000</staleThreshold>
-                    <mainSourceLocation>${basedir}/src/main/java</mainSourceLocation>
-                    <testSourceLocation>${basedir}/src/test/java</testSourceLocation>
-                    <mainResourceLocation>${basedir}/src/main/resources</mainResourceLocation>
-                    <testResourceLocation>${basedir}/src/test/resources</testResourceLocation>
-                    <mainCompiledLocation>${project.build.directory}/classes</mainCompiledLocation>
-                    <testCompiledLocation>${project.build.directory}/test-classes</testCompiledLocation>
-                    <compiledFilesList>
-                        ${project.build.directory}/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
-                    </compiledFilesList>
-                    <inputSourceFilesList>
-                        ${project.build.directory}/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
-                    </inputSourceFilesList>
-                    <inputTestFilesList>
-                        ${project.build.directory}/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
-                    </inputTestFilesList>
-                    <compiledTestFilesList>
-                        ${project.build.directory}/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
-                    </compiledTestFilesList>
+                    <generatedSourceLocation>${project.build.directory}/generated-sources</generatedSourceLocation>
                     <buildState>
-                        <moduleBuildDataFile>${project.build.directory}/build-data/ModuleDependencies.dat
-                        </moduleBuildDataFile>
-                        <resourceBuildDataFile>${project.build.directory}/build-data/ResourceDependencies.dat
-                        </resourceBuildDataFile>
                         <project>${project}</project>
-                        <buildStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/BuildState.dat
-                        </buildStateFilePath>
-                        <resourceStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/ResourceState.dat
-                        </resourceStateFilePath>
+                        <compileStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/compileState.dat</compileStateFilePath>
                     </buildState>
                 </configuration>
             </plugin>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <version>${maven.pmd.plugin.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.openecomp.sdc</groupId>
+                        <artifactId>build-tools</artifactId>
+                        <version>${build.tools.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>net.sourceforge.pmd</groupId>
+                        <artifactId>pmd-core</artifactId>
+                        <version>${pmd.core.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>net.sourceforge.pmd</groupId>
+                        <artifactId>pmd-java</artifactId>
+                        <version>${pmd.java.version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <skip>${skipPMD}</skip>
+                    <showPmdLog>false</showPmdLog>
+                    <analysisCache>false</analysisCache>
+                    <analysisCacheLocation>${project.build.directory}/pmd/pmd.cache</analysisCacheLocation>
+                    <failOnViolation>false</failOnViolation>
+                    <printFailingErrors>false</printFailingErrors>
+                    <format>csv</format>
+                    <targetDirectory>${project.build.directory}/pmd</targetDirectory>
+                    <includeTests>true</includeTests>
+                    <linkXRef>false</linkXRef>
+                    <aggregate>false</aggregate>
+                    <rulesets>
+                        <ruleset>/category/java/bestpractices.xml</ruleset>
+                        <ruleset>/category/java/codestyle.xml</ruleset>
+                        <ruleset>/category/java/design.xml</ruleset>
+                        <ruleset>/category/java/errorprone.xml</ruleset>
+                        <ruleset>/category/java/multithreading.xml</ruleset>
+                        <ruleset>/category/java/performance.xml</ruleset>
+                        <ruleset>/category/java/security.xml</ruleset>
+                    </rulesets>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <phase>integration-test</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.openecomp.sdc.onboarding</groupId>
+                <artifactId>pmd-helper-plugin</artifactId>
+                <version>${project.version}</version>
+                <dependencies>
+                    <dependency>
+                    <groupId>org.openecomp.sdc</groupId>
+                    <artifactId>build-data-helper</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>init-pmd-helper</goal>
+                            <goal>post-verify-helper</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <excludePackaging>pom</excludePackaging>
+                    <pmdTargetLocation>${project.build.directory}/pmd/pmd.xml</pmdTargetLocation>
+                    <pmdFailureReportLocation>${project.build.directory}/pmd.txt</pmdFailureReportLocation>
+                    <pmdReportFile>${project.build.directory}/pmd/pmd.csv</pmdReportFile>
+                    <persistingModuleCoordinates>org.openecomp.sdc:build-data-installer</persistingModuleCoordinates>
+                    <pmdCurrentStateFilePath>org.openecomp.sdc:sdc-onboarding/target/build-data/pmdState.dat</pmdCurrentStateFilePath>
+                    <pmdStateFile>${project.build.outputDirectory}/pmd.dat</pmdStateFile>
+                    <compiledFilesList>${project.build.directory}/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst</compiledFilesList>
+                    <compiledTestFilesList>${project.build.directory}/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst</compiledTestFilesList>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${mvn.jar.version}</version>
+                <configuration>
+                    <archive>
+                        <addMavenDescriptor>${mvnDsc}</addMavenDescriptor>
+                    </archive>
+                    <excludes>
+                        <exclude>${emptyJAR}</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>license-maven-plugin</artifactId>
                 <version>${mvn.license.version}</version>