vifraa / gopom

A maven pom.xml parser written in Go.
MIT License
25 stars 17 forks source link

Extend support to effective POM (multi project) #9

Open ywluogg opened 1 year ago

ywluogg commented 1 year ago

Hello! I appreciated that someone has built this super handy libarary that I found helpful for paring POMs.

TLDR I wanted to check if there's plan that this library would be extended to support multi project POM like the following one:


<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Generated by Maven Help Plugin                                         -->
<!-- See: https://maven.apache.org/plugins/maven-help-plugin/               -->
<!--                                                                        -->
<!-- ====================================================================== -->
<projects>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:parent:pom:0.8-SNAPSHOT'                 -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...
  </project>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:simple-parent:pom:0.8-SNAPSHOT'          -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  </project>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:simple-parent:pom:0.8-SNAPSHOT'          -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
</projects>

This is super useful for multi module projects that would have multiple projects and artifacts and the effective POM would be used for analysis, authentication setups, etc.

vifraa commented 1 year ago

Sounds like something that could be added. Do you have any official documentation regarding the structure that I can look at?

Otherwise you can always create the wrapper structure locally while reusing the Project defined in this repo inside. Something like below:

type Projects struct {
    Projects []gopom.Project `xml:"project"`
}
ywluogg commented 1 year ago

Yeah I didn't find an official document, but I will paste here what I generated for a multi module project as a future feature request. Thanks!

mvn help:effective-pom
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Multi Chapter Parent Project                                       [pom]
[INFO] Multi Chapter Simple Parent Project                                [pom]
[INFO] Multi Chapter Simple Weather API                                   [jar]
[INFO] Multi Chapter Simple Web Application Project                       [war]
[INFO] 
[INFO] ----------------< org.sonatype.mavenbook.multi:parent >-----------------
[INFO] Building Multi Chapter Parent Project 0.8-SNAPSHOT                 [1/4]
[INFO]   from pom.xml
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- help:3.4.0:effective-pom (default-cli) @ parent ---
[INFO] 
Effective POMs, after inheritance, interpolation, and profiles are applied:

<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Generated by Maven Help Plugin                                         -->
<!-- See: https://maven.apache.org/plugins/maven-help-plugin/               -->
<!--                                                                        -->
<!-- ====================================================================== -->
<projects>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:parent:pom:0.8-SNAPSHOT'                 -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.sonatype.mavenbook.multi</groupId>
    <artifactId>parent</artifactId>
    <version>0.8-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Multi Chapter Parent Project</name>
    <modules>
      <module>simple-parent</module>
    </modules>
    <distributionManagement>
      <repository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <snapshotRepository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </snapshotRepository>
    </distributionManagement>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <repositories>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry2</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-experiment/quickstart-java-repo</url>
      </repository>
      <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <releases>
          <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </pluginRepository>
    </pluginRepositories>
    <build>
      <sourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/src/main/java</sourceDirectory>
      <scriptSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/src/main/scripts</scriptSourceDirectory>
      <testSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/src/test/java</testSourceDirectory>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/classes</outputDirectory>
      <testOutputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/test-classes</testOutputDirectory>
      <extensions>
        <extension>
          <groupId>com.google.cloud.artifactregistry</groupId>
          <artifactId>artifactregistry-maven-wagon</artifactId>
          <version>2.2.1</version>
        </extension>
      </extensions>
      <resources>
        <resource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/src/main/resources</directory>
        </resource>
      </resources>
      <testResources>
        <testResource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/src/test/resources</directory>
        </testResource>
      </testResources>
      <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target</directory>
      <finalName>mvnexbook-examples-0.8-SNAPSHOT</finalName>
      <pluginManagement>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>3.0.1</version>
          </plugin>
        </plugins>
      </pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>default-clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
          <executions>
            <execution>
              <id>default-install</id>
              <phase>install</phase>
              <goals>
                <goal>install</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <executions>
            <execution>
              <id>default-deploy</id>
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
          <executions>
            <execution>
              <id>default-site</id>
              <phase>site</phase>
              <goals>
                <goal>site</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
            <execution>
              <id>default-deploy</id>
              <phase>site-deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/site</outputDirectory>
            <reportPlugins>
              <reportPlugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
              </reportPlugin>
            </reportPlugins>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </build>
    <reporting>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/target/site</outputDirectory>
    </reporting>
  </project>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:simple-parent:pom:0.8-SNAPSHOT'          -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
      <groupId>org.sonatype.mavenbook.multi</groupId>
      <artifactId>parent</artifactId>
      <version>0.8-SNAPSHOT</version>
    </parent>
    <groupId>org.sonatype.mavenbook.multi</groupId>
    <artifactId>simple-parent</artifactId>
    <version>0.8-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Multi Chapter Simple Parent Project</name>
    <modules>
      <module>simple-weather</module>
      <module>simple-webapp</module>
    </modules>
    <distributionManagement>
      <repository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <snapshotRepository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </snapshotRepository>
    </distributionManagement>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
    <repositories>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry2</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-experiment/quickstart-java-repo</url>
      </repository>
      <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <releases>
          <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </pluginRepository>
    </pluginRepositories>
    <build>
      <sourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/src/main/java</sourceDirectory>
      <scriptSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/src/main/scripts</scriptSourceDirectory>
      <testSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/src/test/java</testSourceDirectory>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/classes</outputDirectory>
      <testOutputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/test-classes</testOutputDirectory>
      <extensions>
        <extension>
          <groupId>com.google.cloud.artifactregistry</groupId>
          <artifactId>artifactregistry-maven-wagon</artifactId>
          <version>2.2.1</version>
        </extension>
      </extensions>
      <resources>
        <resource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/src/main/resources</directory>
        </resource>
      </resources>
      <testResources>
        <testResource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/src/test/resources</directory>
        </testResource>
      </testResources>
      <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target</directory>
      <finalName>mvnexbook-examples-0.8-SNAPSHOT</finalName>
      <pluginManagement>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>3.0.1</version>
          </plugin>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.5</source>
              <target>1.5</target>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>default-clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
          <executions>
            <execution>
              <id>default-install</id>
              <phase>install</phase>
              <goals>
                <goal>install</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <executions>
            <execution>
              <id>default-deploy</id>
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
          <executions>
            <execution>
              <id>default-site</id>
              <phase>site</phase>
              <goals>
                <goal>site</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
            <execution>
              <id>default-deploy</id>
              <phase>site-deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/site</outputDirectory>
            <reportPlugins>
              <reportPlugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
              </reportPlugin>
            </reportPlugins>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </build>
    <reporting>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/target/site</outputDirectory>
    </reporting>
  </project>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:simple-weather:jar:0.8-SNAPSHOT'         -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
      <groupId>org.sonatype.mavenbook.multi</groupId>
      <artifactId>simple-parent</artifactId>
      <version>0.8-SNAPSHOT</version>
    </parent>
    <groupId>org.sonatype.mavenbook.multi</groupId>
    <artifactId>simple-weather</artifactId>
    <version>0.8-SNAPSHOT</version>
    <name>Multi Chapter Simple Weather API</name>
    <distributionManagement>
      <repository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <snapshotRepository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </snapshotRepository>
    </distributionManagement>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1.1</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.5</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
    <repositories>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry2</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-experiment/quickstart-java-repo</url>
      </repository>
      <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <releases>
          <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </pluginRepository>
    </pluginRepositories>
    <build>
      <sourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/src/main/java</sourceDirectory>
      <scriptSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/src/main/scripts</scriptSourceDirectory>
      <testSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/src/test/java</testSourceDirectory>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/classes</outputDirectory>
      <testOutputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/test-classes</testOutputDirectory>
      <extensions>
        <extension>
          <groupId>com.google.cloud.artifactregistry</groupId>
          <artifactId>artifactregistry-maven-wagon</artifactId>
          <version>2.2.1</version>
        </extension>
      </extensions>
      <resources>
        <resource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/src/main/resources</directory>
        </resource>
      </resources>
      <testResources>
        <testResource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/src/test/resources</directory>
        </testResource>
      </testResources>
      <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target</directory>
      <finalName>mvnexbook-examples-0.8-SNAPSHOT</finalName>
      <pluginManagement>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>3.0.1</version>
          </plugin>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.5</source>
              <target>1.5</target>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <testFailureIgnore>true</testFailureIgnore>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>default-clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
          <executions>
            <execution>
              <id>default-testResources</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>testResources</goal>
              </goals>
            </execution>
            <execution>
              <id>default-resources</id>
              <phase>process-resources</phase>
              <goals>
                <goal>resources</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <executions>
            <execution>
              <id>default-compile</id>
              <phase>compile</phase>
              <goals>
                <goal>compile</goal>
              </goals>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </execution>
            <execution>
              <id>default-testCompile</id>
              <phase>test-compile</phase>
              <goals>
                <goal>testCompile</goal>
              </goals>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.2</version>
          <executions>
            <execution>
              <id>default-test</id>
              <phase>test</phase>
              <goals>
                <goal>test</goal>
              </goals>
              <configuration>
                <testFailureIgnore>true</testFailureIgnore>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <testFailureIgnore>true</testFailureIgnore>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <executions>
            <execution>
              <id>default-jar</id>
              <phase>package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
          <executions>
            <execution>
              <id>default-install</id>
              <phase>install</phase>
              <goals>
                <goal>install</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <executions>
            <execution>
              <id>default-deploy</id>
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
          <executions>
            <execution>
              <id>default-site</id>
              <phase>site</phase>
              <goals>
                <goal>site</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
            <execution>
              <id>default-deploy</id>
              <phase>site-deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/site</outputDirectory>
            <reportPlugins>
              <reportPlugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
              </reportPlugin>
            </reportPlugins>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </build>
    <reporting>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-weather/target/site</outputDirectory>
    </reporting>
  </project>
  <!-- ====================================================================== -->
  <!--                                                                        -->
  <!-- Effective POM for project                                              -->
  <!-- 'org.sonatype.mavenbook.multi:simple-webapp:war:0.8-SNAPSHOT'          -->
  <!--                                                                        -->
  <!-- ====================================================================== -->
  <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
      <groupId>org.sonatype.mavenbook.multi</groupId>
      <artifactId>simple-parent</artifactId>
      <version>0.8-SNAPSHOT</version>
    </parent>
    <groupId>org.sonatype.mavenbook.multi</groupId>
    <artifactId>simple-webapp</artifactId>
    <version>0.8-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Multi Chapter Simple Web Application Project</name>
    <distributionManagement>
      <repository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <snapshotRepository>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </snapshotRepository>
    </distributionManagement>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-servlet_2.4_spec</artifactId>
        <version>1.1.1</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.sonatype.mavenbook.multi</groupId>
        <artifactId>simple-weather</artifactId>
        <version>0.8-SNAPSHOT</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
    <repositories>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-bugbash/java-bugbash-repo</url>
      </repository>
      <repository>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <id>artifact-registry2</id>
        <url>https://us-central1-maven.pkg.dev/gcb-catalog-experiment/quickstart-java-repo</url>
      </repository>
      <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <releases>
          <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
      </pluginRepository>
    </pluginRepositories>
    <build>
      <sourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/src/main/java</sourceDirectory>
      <scriptSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/src/main/scripts</scriptSourceDirectory>
      <testSourceDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/src/test/java</testSourceDirectory>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/classes</outputDirectory>
      <testOutputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/test-classes</testOutputDirectory>
      <extensions>
        <extension>
          <groupId>com.google.cloud.artifactregistry</groupId>
          <artifactId>artifactregistry-maven-wagon</artifactId>
          <version>2.2.1</version>
        </extension>
      </extensions>
      <resources>
        <resource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/src/main/resources</directory>
        </resource>
      </resources>
      <testResources>
        <testResource>
          <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/src/test/resources</directory>
        </testResource>
      </testResources>
      <directory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target</directory>
      <finalName>simple-webapp</finalName>
      <pluginManagement>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>3.0.1</version>
          </plugin>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.5</source>
              <target>1.5</target>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>default-clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
          <executions>
            <execution>
              <id>default-testResources</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>testResources</goal>
              </goals>
            </execution>
            <execution>
              <id>default-resources</id>
              <phase>process-resources</phase>
              <goals>
                <goal>resources</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <executions>
            <execution>
              <id>default-compile</id>
              <phase>compile</phase>
              <goals>
                <goal>compile</goal>
              </goals>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </execution>
            <execution>
              <id>default-testCompile</id>
              <phase>test-compile</phase>
              <goals>
                <goal>testCompile</goal>
              </goals>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.2</version>
          <executions>
            <execution>
              <id>default-test</id>
              <phase>test</phase>
              <goals>
                <goal>test</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
          <executions>
            <execution>
              <id>default-war</id>
              <phase>package</phase>
              <goals>
                <goal>war</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
          <executions>
            <execution>
              <id>default-install</id>
              <phase>install</phase>
              <goals>
                <goal>install</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <executions>
            <execution>
              <id>default-deploy</id>
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
          <executions>
            <execution>
              <id>default-site</id>
              <phase>site</phase>
              <goals>
                <goal>site</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
            <execution>
              <id>default-deploy</id>
              <phase>site-deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
              <configuration>
                <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/site</outputDirectory>
                <reportPlugins>
                  <reportPlugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                  </reportPlugin>
                </reportPlugins>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/site</outputDirectory>
            <reportPlugins>
              <reportPlugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
              </reportPlugin>
            </reportPlugins>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>maven-jetty-plugin</artifactId>
          <version>6.1.9</version>
        </plugin>
      </plugins>
    </build>
    <reporting>
      <outputDirectory>/Users/yawenluo/Desktop/testfolder/local_dev/maven-demo-repo/mvnexbook-examples-1.0/ch-multi/simple-parent/simple-webapp/target/site</outputDirectory>
    </reporting>
  </project>
</projects>

I