<!--
  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.
-->
<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>
    <groupId>org.apache.cxf.xjc-utils</groupId>
    <artifactId>xjc-utils</artifactId>
    <packaging>pom</packaging>
    <version>3.1.0</version>
    <name>Apache CXF XJC Utils</name>
    <url>http://cxf.apache.org</url>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>18</version>
    </parent>
    <scm>
      <connection>scm:git:http://git-wip-us.apache.org/repos/asf/cxf-xjc-utils.git</connection>
      <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/cxf-xjc-utils.git</developerConnection>
      <tag>xjc-utils-3.1.0</tag>
  </scm>
    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/CXFXJC</url>
    </issueManagement>
    <prerequisites>
        <maven>3.0</maven>
    </prerequisites>

    <properties>
        <jdk.version>1.6</jdk.version>

        <eclipse.outputDirectory>${basedir}/target/classes</eclipse.outputDirectory>
        <downloadSources>true</downloadSources>

        <pmd.eclipse.ruleset>cxf-pmd-ruleset.xml</pmd.eclipse.ruleset>
        <resources.base.path />
        <checkstyle.extension />
    </properties>

    <modules>
        <module>cxf-xjc-plugin</module>
        <module>dv</module>
        <module>dv-test</module>
        <module>ts</module>
        <module>ts-test</module>
        <module>boolean</module>
        <module>boolean-test</module>
        <module>wsdlextension</module>
        <module>wsdlextension-test</module>
        <module>bug671</module>
        <module>bug986</module>
        <module>property-listener</module>
        <module>javadoc</module>
        <module>runtime</module>
    </modules>
    <repositories>
         <repository>
             <id>apache.snapshots</id>
             <url>http://repository.apache.org/snapshots/</url>
             <name>Apache Snapshot Repo</name>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository> 
    </repositories>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.2.12</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.2.11</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>2.2.11</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
                <version>2.2.11</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>jaxme</groupId>
                <artifactId>jaxme2</artifactId>
                <version>0.5.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>3.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-core</artifactId>
                <version>3.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-compat</artifactId>
                <version>3.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.5</version>
            </dependency>
            <dependency>
                <groupId>wsdl4j</groupId>
                <artifactId>wsdl4j</artifactId>
                <version>1.6.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <distributionManagement>
        <site>
            <id>apache.cxf.site</id>
            <url>scpexe://people.apache.org/www/cxf.apache.org/cxf/mvn_site/xjc-utils</url>
        </site>
    </distributionManagement>
    <inceptionYear>2006</inceptionYear>

    <mailingLists>
        <mailingList>
            <name>Apache CXF User List</name>
            <subscribe>users-subscribe@cxf.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@cxf.apache.org</unsubscribe>
            <post>users@cxf.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/cxf-users</archive>
        </mailingList>
        <mailingList>
            <name>Apache CXF Developer List</name>
            <subscribe>dev-subscribe@cxf.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@cxf.apache.org</unsubscribe>
            <post>dev@cxf.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/cxf-dev</archive>
        </mailingList>
        <mailingList>
            <name>Apache CXF Commits List</name>
            <subscribe>commits-subscribe@cxf.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@cxf.apache.org</unsubscribe>
            <post>commits@cxf.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/cxf-commits</archive>
        </mailingList>
        <mailingList>
            <name>Apache CXF Issues List</name>
            <subscribe>issues-subscribe@cxf.apache.org</subscribe>
            <unsubscribe>issues-unsubscribe@cxf.apache.org</unsubscribe>
            <post>issues@cxf.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/cxf-issues</archive>
        </mailingList>
        <mailingList>
            <name>Apache CXF Build Notifications List</name>
            <subscribe>notifications-subscribe@cxf.apache.org</subscribe>
            <unsubscribe>notifications-unsubscribe@cxf.apache.org</unsubscribe>
            <post>notifications@cxf.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/cxf-notifications</archive>
        </mailingList>
    </mailingLists>

    <build>
        <defaultGoal>install</defaultGoal>

        <plugins>
            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-pmd-plugin</artifactId>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <useReleaseProfile>false</useReleaseProfile>
                        <preparationGoals>clean install</preparationGoals>
                        <goals>deploy</goals>
                        <arguments>-Prelease,deploy,apache-release</arguments>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.9.1</version>
                    <configuration>
                        <attach>true</attach>
                        <source>1.6</source>
                        <quiet>true</quiet>
                        <bottom>Apache CXF</bottom>
                        <javadocVersion>1.6</javadocVersion>
                        <encoding>UTF-8</encoding>
                        <!--subpackages>org.apache.cxf</subpackages-->
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.17</version>
                    <configuration>
                        <reportFormat>brief</reportFormat>
                        <useFile>false</useFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <maxmem>256M</maxmem>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <Specification-Title>${project.name}</Specification-Title>
                                <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                                <Specification-Version>${project.version}</Specification-Version>
                                <Implementation-Title>${project.name}</Implementation-Title>
                                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                                <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                                <Implementation-Version>${project.version}</Implementation-Version>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-4</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.0-beta-3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>3.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <outputDirectory>${eclipse.outputDirectory}</outputDirectory>
                        <buildcommands>
                            <java.lang.String>org.eclipse.jdt.core.javabuilder</java.lang.String>
                            <java.lang.String>net.sf.eclipsecs.core.CheckstyleBuilder</java.lang.String>
                            <java.lang.String>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</java.lang.String>
                        </buildcommands>
                        <projectnatures>
                            <nature>org.eclipse.jdt.core.javanature</nature>
                            <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
                            <nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
                        </projectnatures>
                        <ajdtVersion>none</ajdtVersion>
                        <additionalConfig>
                            <file>
                                <name>.checkstyle</name>
                                <location>/cxf-eclipse-checkstyle${checkstyle.extension}</location>
                            </file>
                            <file>
                                <name>.pmd</name>
                                <location>/cxf-eclipse-pmd</location>
                            </file>
                            <file>
                                <name>.ruleset</name>
                                <location>/${pmd.eclipse.ruleset}</location>
                            </file>
                        </additionalConfig>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.cxf.build-utils</groupId>
                            <artifactId>cxf-buildtools</artifactId>
                            <version>2.6.0</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>2.9.1</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.cxf.build-utils</groupId>
                            <artifactId>cxf-buildtools</artifactId>
                            <version>2.6.0</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <configuration>
                                <configLocation>${resources.base.path}cxf-checkstyle${checkstyle.extension}.xml</configLocation>
                                <consoleOutput>true</consoleOutput>
                                <failsOnError>true</failsOnError>
                                <linkXRef>false</linkXRef>
                                <suppressionsLocation>${resources.base.path}cxf-checkstyle-suppressions.xml</suppressionsLocation>
                                <sourceDirectory>${basedir}/src</sourceDirectory>
                                <excludes>**/archetype-resources/**/*.java</excludes>
                            </configuration>
                            <goals>
                                <goal>checkstyle</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.0.1</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.cxf.build-utils</groupId>
                            <artifactId>cxf-buildtools</artifactId>
                            <version>2.6.0</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <rulesets>
                            <ruleset>${resources.base.path}cxf-pmd-ruleset.xml</ruleset>
                            <ruleset>${resources.base.path}cxf-pmd-custom.xml</ruleset>
                        </rulesets>
                        <sourceEncoding>UTF-8</sourceEncoding>
                        <targetJdk>1.5</targetJdk>
                        <linkXRef>false</linkXRef>
                        <includeTests>true</includeTests>
                        <verbose>true</verbose>
                        <excludeRoots>
                            <excludeRoot>${basedir}/src/main/generated</excludeRoot>
                        </excludeRoots>
                    </configuration>
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                	<groupId>org.eclipse.m2e</groupId>
                	<artifactId>lifecycle-mapping</artifactId>
                	<version>1.0.0</version>
                	<configuration>
                		<lifecycleMappingMetadata>
                			<pluginExecutions>
                				<pluginExecution>
                					<pluginExecutionFilter>
                						<groupId>
                							org.apache.maven.plugins
                						</groupId>
                						<artifactId>
                							maven-checkstyle-plugin
                						</artifactId>
                						<versionRange>
                							[2.9.1,)
                						</versionRange>
                						<goals>
                							<goal>checkstyle</goal>
                						</goals>
                					</pluginExecutionFilter>
                					<action>
                						<ignore />
                					</action>
                				</pluginExecution>
                				<pluginExecution>
                					<pluginExecutionFilter>
                						<groupId>
                							org.apache.maven.plugins
                						</groupId>
                						<artifactId>
                							maven-pmd-plugin
                						</artifactId>
                						<versionRange>
                							[3.0.1,)
                						</versionRange>
                						<goals>
                							<goal>check</goal>
                						</goals>
                					</pluginExecutionFilter>
                					<action>
                						<ignore />
                					</action>
                				</pluginExecution>
                				<pluginExecution>
                					<pluginExecutionFilter>
                						<groupId>
                							org.apache.maven.plugins
                						</groupId>
                						<artifactId>
                							maven-remote-resources-plugin
                						</artifactId>
                						<versionRange>
                							[1.0.0,)
                						</versionRange>
                						<goals>
                							<goal>process</goal>
                						</goals>
                					</pluginExecutionFilter>
                					<action>
                						<ignore />
                					</action>
                				</pluginExecution>
                			</pluginExecutions>
                		</lifecycleMappingMetadata>
                	</configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>fastinstall</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
        </profile>
        <profile>
            <id>nochecks</id>
            <properties>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
        </profile>

        <profile>
             <id>setup.eclipse</id>
             <properties>
                 <eclipse.workspace.dir>${basedir}/../workspace</eclipse.workspace.dir>
             </properties>
             <build>
                 <defaultGoal>process-test-sources</defaultGoal>
                 <pluginManagement>
                     <plugins>
                         <plugin>
                             <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-compiler-plugin</artifactId>
                             <version>3.1</version>
                             <configuration>
                                 <source>${jdk.version}</source>
                                 <target>${jdk.version}</target>
                                 <maxmem>256M</maxmem>
                             </configuration>
                         </plugin>
                     </plugins>
                 </pluginManagement>
                 <plugins>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-eclipse-plugin</artifactId>
                         <executions>
                             <execution>
                                 <id>setup.eclipse.project</id>
                                 <phase>process-test-sources</phase>
                                 <goals>
                                     <goal>eclipse</goal>
                                 </goals>
                             </execution>
                         </executions>
                     </plugin>
                 </plugins>
             </build>
        </profile>
    </profiles>

</project>

