diff --git a/project-configs/maven/conf/settings.xml b/project-configs/maven/conf/settings.xml
new file mode 100644
index 0000000..55687cd
--- /dev/null
+++ b/project-configs/maven/conf/settings.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ECOMP Policy Engine - Drools PDP
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+	license agreements. See the NOTICE file distributed with this work for additional 
+	information regarding copyright ownership. The ASF licenses this file to 
+	you under the Apache License, Version 2.0 (the "License"); you may not use 
+	this file except in compliance with the License. You may obtain a copy of 
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+	by applicable law or agreed to in writing, software distributed under the 
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+	OF ANY KIND, either express or implied. See the License for the specific 
+	language governing permissions and limitations under the License. -->
+
+
+
+<!-- | This is the configuration file for Maven. It can be specified at two 
+	levels: | | 1. User Level. This settings.xml file provides configuration 
+	for a single user, | and is normally provided in ${user.home}/.m2/settings.xml. 
+	| | NOTE: This location can be overridden with the CLI option: | | -s /path/to/user/settings.xml 
+	| | 2. Global Level. This settings.xml file provides configuration for all 
+	Maven | users on a machine (assuming they're all using the same Maven | installation). 
+	It's normally provided in | ${maven.home}/conf/settings.xml. | | NOTE: This 
+	location can be overridden with the CLI option: | | -gs /path/to/global/settings.xml 
+	| | The sections in this sample file are intended to give you a running start 
+	at | getting the most out of your Maven installation. Where appropriate, 
+	the default | values (values used when the setting is not specified) are 
+	provided. | | -->
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+	<!-- localRepository | The path to the local repository maven will use to 
+		store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
+	<localRepository>${user.home}/.m2/repository</localRepository>
+	<!-- interactiveMode | This will determine whether maven prompts you when 
+		it needs input. If set to false, | maven will use a sensible default value, 
+		perhaps based on some other setting, for | the parameter in question. | | 
+		Default: true <interactiveMode>true</interactiveMode> -->
+
+	<!-- offline | Determines whether maven should attempt to connect to the 
+		network when executing a build. | This will have an effect on artifact downloads, 
+		artifact deployment, and others. | | Default: false <offline>false</offline> -->
+
+	<!-- pluginGroups | This is a list of additional group identifiers that 
+		will be searched when resolving plugins by their prefix, i.e. | when invoking 
+		a command line like "mvn prefix:goal". Maven will automatically add the group 
+		identifiers | "org.apache.maven.plugins" and "org.codehaus.mojo" if these 
+		are not already contained in the list. | -->
+	<pluginGroups>
+		<!-- pluginGroup | Specifies a further group identifier to use for plugin 
+			lookup. <pluginGroup>com.your.plugins</pluginGroup> -->
+	</pluginGroups>
+
+	<!-- proxies | This is a list of proxies which can be used on this machine 
+		to connect to the network. | Unless otherwise specified (by system property 
+		or command-line switch), the first proxy | specification in this list marked 
+		as active will be used. | -->
+	<proxies>
+	</proxies>
+
+	<!-- servers | This is a list of authentication profiles, keyed by the server-id 
+		used within the system. | Authentication profiles can be used whenever maven 
+		must make a connection to a remote server. | -->
+	<servers>
+		<!-- server | Specifies the authentication information to use when connecting 
+			to a particular server, identified by | a unique name within the system (referred 
+			to by the 'id' attribute below). | | NOTE: You should either specify username/password 
+			OR privateKey/passphrase, since these pairings are | used together. | <server> 
+			<id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> 
+			</server> -->
+
+		<!-- Another sample, using keys to authenticate. <server> <id>siteServer</id> 
+			<privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave 
+			empty if not used.</passphrase> </server> -->
+	</servers>
+
+	<!-- mirrors | This is a list of mirrors to be used in downloading artifacts 
+		from remote repositories. | | It works like this: a POM may declare a repository 
+		to use in resolving certain artifacts. | However, this repository may have 
+		problems with heavy traffic at times, so people have mirrored | it to several 
+		places. | | That repository definition will have a unique id, so we can create 
+		a mirror reference for that | repository, to be used as an alternate download 
+		site. The mirror site will be the preferred | server for that repository. 
+		| -->
+	<mirrors>
+		<!-- mirror | Specifies a repository mirror site to use instead of a given 
+			repository. The repository that | this mirror serves has an ID that matches 
+			the mirrorOf element of this mirror. IDs are used | for inheritance and direct 
+			lookup purposes, and must be unique across the set of mirrors. | -->
+	</mirrors>
+
+	<!-- profiles | This is a list of profiles which can be activated in a variety 
+		of ways, and which can modify | the build process. Profiles provided in the 
+		settings.xml are intended to provide local machine- | specific paths and 
+		repository locations which allow the build to work in the local environment. 
+		| | For example, if you have an integration testing plugin - like cactus 
+		- that needs to know where | your Tomcat instance is installed, you can provide 
+		a variable here such that the variable is | dereferenced during the build 
+		process to configure the cactus plugin. | | As noted above, profiles can 
+		be activated in a variety of ways. One way - the activeProfiles | section 
+		of this document (settings.xml) - will be discussed later. Another way essentially 
+		| relies on the detection of a system property, either matching a particular 
+		value for the property, | or merely testing its existence. Profiles can also 
+		be activated by JDK version prefix, where a | value of '1.4' might activate 
+		a profile when the build is executed on a JDK version of '1.4.2_07'. | Finally, 
+		the list of active profiles can be specified directly from the command line. 
+		| | NOTE: For profiles defined in the settings.xml, you are restricted to 
+		specifying only artifact | repositories, plugin repositories, and free-form 
+		properties to be used as configuration | variables for plugins in the POM. 
+		| | -->
+	<profiles>
+		<!-- profile | Specifies a set of introductions to the build process, to 
+			be activated using one or more of the | mechanisms described above. For inheritance 
+			purposes, and to activate profiles via <activatedProfiles/> | or the command 
+			line, profiles have to have an ID that is unique. | | An encouraged best 
+			practice for profile identification is to use a consistent naming convention 
+			| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 
+			'user-brett', etc. | This will make it more intuitive to understand what 
+			the set of introduced profiles is attempting | to accomplish, particularly 
+			when you only have a list of profile id's for debug. | | This profile example 
+			uses the JDK version to trigger activation, and provides a JDK-specific repo. 
+			<profile> <id>jdk-1.4</id> <activation> <jdk>1.4</jdk> </activation> <repositories> 
+			<repository> <id>jdk14</id> <name>Repository for JDK 1.4 builds</name> <url>http://www.myhost.com/maven/jdk14</url> 
+			<layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> 
+			</repositories> </profile> -->
+
+		<!-- | Here is another profile, activated by the system property 'target-env' 
+			with a value of 'dev', | which provides a specific path to the Tomcat instance. 
+			To use this, your plugin configuration | might hypothetically look like: 
+			| | ... | <plugin> | <groupId>org.myco.myplugins</groupId> | <artifactId>myplugin</artifactId> 
+			| | <configuration> | <tomcatLocation>${tomcatPath}</tomcatLocation> | </configuration> 
+			| </plugin> | ... | | NOTE: If you just wanted to inject this configuration 
+			whenever someone set 'target-env' to | anything, you could just leave off 
+			the <value/> inside the activation-property. | <profile> <id>env-dev</id> 
+			<activation> <property> <name>target-env</name> <value>dev</value> </property> 
+			</activation> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath> 
+			</properties> </profile> -->
+	</profiles>
+
+	<!-- activeProfiles | List of profiles that are active for all builds. | 
+		<activeProfiles> <activeProfile>alwaysActiveProfile</activeProfile> <activeProfile>anotherAlwaysActiveProfile</activeProfile> 
+		</activeProfiles> -->
+</settings>
