Loading

How To Setup Maven on PCE

Дата публикации: Mar 2, 2024
Решение

GOAL
 

You have seen the general setup for Maven from this article for commercial cloud: How to use Enterprise Maven Repository credentials with settings.xml and pom.xml example

However, setup on PCE has different URLs. This guide will show us how to configure Maven for PCE.
 

PROCEDURE

PCE will have a different Exchange URL. We will highlight the differences.

Here is the full sample settings.xml and pom.xml.

Settings.xml (non-SSO):

<?xml version="1.0"?>
<settings>

  <servers>
    <server>
      <id>anypoint-exchange-v2</id>
      <username>mule-username</username>
      <password>mule-password</password>
    </server>

    <server>
      <id>MuleRepository</id>
      <username>yourNexusID</username>
      <password>yourMuleNexusPassword</password>
    </server>
  </servers>

  <pluginGroups>
    <pluginGroup>org.mule.tools</pluginGroup>
  </pluginGroups>

  <profiles>
    <profile>
      <id>mule-extra-repos</id>

      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <repositories>
        <repository>
          <id>mule-public</id>
          <url> https://repository.mulesoft.org/nexus/content/repositories/public </url>
        </repository>
      </repositories>

      <pluginRepositories>
        <pluginRepository>
          <id>mule-public</id>
          <url> https://repository.mulesoft.org/nexus/content/repositories/public </url>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>Mule</id>

      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <repositories>
        <repository>
          <id>MuleRepository</id>
          <name>MuleRepository</name>
          <url>https://repository.mulesoft.org/nexus-ee/content/repositories/releases-ee/</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>

         <repository>
          <id>Repository-NEW</id>
          <name>Repository</name>
          <url>https://repository.mulesoft.org/nexus/content/repositories/public</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>         
      </repositories>

    </profile>
  </profiles>
</settings>

Settings.xml (with SSO).


Please be aware that the bearer tokens generated are usually only valid for about an hour (more information: How long does an Anypoint bearer token expire).

You will need to replace "my-bearer-token" with the token from here: How to generate a bearer token for Anypoint Platform API calls using a SAML enabled account.

If you are on PCE 2.1.0+, we recommend using a connected app to get this token: Creating connected app and getting the bearer token example 
 
<?xml version="1.0"?>
<settings>

  <servers>
    <server>
      <id>anypoint-exchange-v2</id>
      <username>~~~Token~~~</username>
      <password>my-bearer-token</password>
    </server>

    <server>
      <id>MuleRepository</id>
      <username>yourNexusID</username>
      <password>yourMuleNexusPassword</password>
    </server>
  </servers>

  <pluginGroups>
    <pluginGroup>org.mule.tools</pluginGroup>
  </pluginGroups>

  <profiles>
    <profile>
      <id>mule-extra-repos</id>

      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <repositories>
        <repository>
          <id>mule-public</id>
          <url> https://repository.mulesoft.org/nexus/content/repositories/public </url>
        </repository>
      </repositories>

      <pluginRepositories>
        <pluginRepository>
          <id>mule-public</id>
          <url> https://repository.mulesoft.org/nexus/content/repositories/public </url>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>Mule</id>

      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <repositories>
        <repository>
          <id>MuleRepository</id>
          <name>MuleRepository</name>
          <url>https://repository.mulesoft.org/nexus-ee/content/repositories/releases-ee/</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>

         <repository>
          <id>Repository-NEW</id>
          <name>Repository</name>
          <url>https://repository.mulesoft.org/nexus/content/repositories/public</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>         
      </repositories>

    </profile>
  </profiles>
</settings>
 

Sample Pom.xml.


This is taken and modified from this example (link). 
Please replace all instances of "my-org-id" with your organization ID: How to know my Organization ID (Org ID) on the Anypoint Platform
Replace <PCE FQDN> with your PCE instance's domain name (more information)
 
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>my-org-id</groupId>
    <artifactId>custom-response-policy</artifactId>
    <version>1.0.3</version>

    <name>Custom Response</name>
    <description>Modifies the payload and/or the status code when some condition is met</description>

    <packaging>mule-policy</packaging>

    <properties>
        <mule.maven.plugin.version>3.4.0</mule.maven.plugin.version>
        <exchange.url>https://<PCE FQDN>/exchange/maven/api/v2/organizations/<my-org-id>/maven</exchange.url>
        <httpPolicyTransformVersion>3.0.0</httpPolicyTransformVersion>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-maven-plugin</artifactId>
                <version>${mule.maven.plugin.version}</version>
                <extensions>true</extensions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <executions>
                    <execution>
                        <id>upload-template</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>deploy-file</goal>
                        </goals>
                        <configuration>
                            <repositoryId>anypoint-exchange-v2</repositoryId>
                            <url>${exchange.url}</url>
                            <file>${project.basedir}/${project.artifactId}.yaml</file>
                            <generatePom>false</generatePom>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>${project.artifactId}</artifactId>
                            <version>${project.version}</version>
                            <packaging>yaml</packaging>
                            <classifier>policy-definition</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.mule.connectors</groupId>
            <artifactId>mule-http-connector</artifactId>
            <version>1.5.22</version>
            <classifier>mule-plugin</classifier>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>releases-ee</id>
            <name>Mule EE Repository</name>
            <url>https://repository.mulesoft.org/nexus-ee/content/repositories/releases-ee/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>anypoint-exchange-v2</id>
            <name>Corporate Repository</name>
            <url>${exchange.url}</url>
            <layout>default</layout>
        </repository>
    </distributionManagement>

    <pluginRepositories>
        <pluginRepository>
            <id>mule-plugin</id>
            <name>Mule Repository</name>
            <url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
        </pluginRepository>
    </pluginRepositories>
</project>


 
Номер статьи базы знаний

001120857

 
Загрузка
Salesforce Help | Article