Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MicroProfile/Maven"

(Adding information about new build process.)
m
 
(5 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
After a release is uploaded from Jenkins but before a release is published in Maven Central, usually a manual approval is required in [https://oss.sonatype.org/#stagingRepositories Sonatype Nexus]. Every committer is eligible to have access to the Sonatype Nexus with permission for the org.eclipse.microprofile artifact group prefix. If you are a committer and don't have access, do the following steps:
 
After a release is uploaded from Jenkins but before a release is published in Maven Central, usually a manual approval is required in [https://oss.sonatype.org/#stagingRepositories Sonatype Nexus]. Every committer is eligible to have access to the Sonatype Nexus with permission for the org.eclipse.microprofile artifact group prefix. If you are a committer and don't have access, do the following steps:
  
<ol>
+
1. Register yourself in the [https://issues.sonatype.org public Sonatype Jira] to get an account for both Sonatype Jira and Nexus
<li>
+
 
  Register yourself in the [https://issues.sonatype.org public Sonatype Jira] to get an account for both Sonatype Jira and Nexus
+
2. Create an issue to request access to the org.eclipse.microprofile artifact group prefix and mention that you're a committer to the MicroProfile project. As a reference, here's the [https://issues.sonatype.org/browse/OSSRH-32787 original Jira for the group prefix]. Link your new Jira issue to the original for reference.
  </li>
+
<li>
+
  Create an issue to request access to the org.eclipse.microprofile artifact group prefix and mention that you're a committer to the MicroProfile project. Asa reference, here's the [https://issues.sonatype.org/browse/OSSRH-32787 original Jira for the group prefix]. Link your new Jira issue to the original for reference.
+
  </li>
+
</ol>
+
  
 
== Sonatype OSS releases repository ==
 
== Sonatype OSS releases repository ==
Line 18: Line 13:
 
For projects using the new release process, you should release against Sonatype.  Inheriting from the microprofile-parent will set this up for you, as long as you don't declare a repository section.  Otherwise, the repository looks like:
 
For projects using the new release process, you should release against Sonatype.  Inheriting from the microprofile-parent will set this up for you, as long as you don't declare a repository section.  Otherwise, the repository looks like:
  
 +
<pre>
 
     <distributionManagement>
 
     <distributionManagement>
 
         <repository>
 
         <repository>
Line 31: Line 27:
 
         </snapshotRepository>
 
         </snapshotRepository>
 
     </distributionManagement>
 
     </distributionManagement>
 +
</pre>
  
 
The Jenkins server is setup to be able to push to this repository.  A committer would still need to login to Sonatype OSS to release the repository when its ready to be released.
 
The Jenkins server is setup to be able to push to this repository.  A committer would still need to login to Sonatype OSS to release the repository when its ready to be released.
  
== Eclipse releases repository ==
+
== Required POM Configuration ==
  
The [https://repo.eclipse.org/content/repositories/microprofile-snapshots Eclipse MicroProfile releases repository] is also available but no longer used since we use the Maven Central repository instead. Sometimes non-final versions like milestones or candidate releases were deployed to this repository instead of Maven Central. This apprach is considered obsolete now and all non-snapshot releases should be published to Maven Central.
+
The following release profile should be present in all poms to be released via Jenkins
 +
 
 +
<pre>
 +
        <profile>
 +
            <id>release</id>
 +
            <build>
 +
                <plugins>
 +
                    <plugin>
 +
                        <groupId>org.sonatype.plugins</groupId>
 +
                        <artifactId>nexus-staging-maven-plugin</artifactId>
 +
                        <version>1.6.3</version>
 +
                        <extensions>true</extensions>
 +
                        <configuration>
 +
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
 +
                            <serverId>ossrh</serverId>
 +
                            <autoReleaseAfterClose>false</autoReleaseAfterClose>
 +
                        </configuration>
 +
                    </plugin>
 +
                    <plugin>
 +
                        <groupId>org.apache.maven.plugins</groupId>
 +
                        <artifactId>maven-source-plugin</artifactId>
 +
                        <executions>
 +
                            <execution>
 +
                                <id>attach-sources</id>
 +
                                <goals>
 +
                                    <goal>jar-no-fork</goal>
 +
                                </goals>
 +
                            </execution>
 +
                        </executions>
 +
                    </plugin>
 +
                    <plugin>
 +
                        <groupId>org.apache.maven.plugins</groupId>
 +
                        <artifactId>maven-javadoc-plugin</artifactId>
 +
                        <executions>
 +
                            <execution>
 +
                                <id>attach-javadocs</id>
 +
                                <goals>
 +
                                    <goal>jar</goal>
 +
                                </goals>
 +
                            </execution>
 +
                        </executions>
 +
                    </plugin>
 +
                    <plugin>
 +
                        <groupId>org.apache.maven.plugins</groupId>
 +
                        <artifactId>maven-gpg-plugin</artifactId>
 +
                        <version>1.6</version>
 +
                        <executions>
 +
                            <execution>
 +
                                <id>sign-artifacts</id>
 +
                                <phase>verify</phase>
 +
                                <goals>
 +
                                    <goal>sign</goal>
 +
                                </goals>
 +
                            </execution>
 +
                        </executions>
 +
                    </plugin>
 +
                </plugins>
 +
            </build>
 +
        </profile>
 +
</pre>
  
 
= Sonatype Snapshot Repository =
 
= Sonatype Snapshot Repository =
  
For all builds, the [https://oss.sonatype.org/content/repositories/snapshots/ Sonatype OSS snapshot repository] is used.  
+
For all builds, the [https://oss.sonatype.org/content/repositories/snapshots/ Sonatype OSS snapshot repository] is used.
  
= Snapshot repository =
+
[[Category:MicroProfile]]
 
+
For daily snapshots, the [https://repo.eclipse.org/content/repositories/microprofile-snapshots/ Eclipse MicroProfile snapshot repository] is used. Jenkins snapshot jobs are set to deploy to this repository automatically.
+
 
+
All the artifacts are automatically accessible through the global [https://repo.eclipse.org/content/repositories/snapshots/ Eclipse snapshot repository]. You can add it to maven configuration with the following snippet. As the url, you can also use https://repo.eclipse.org/content/repositories/microprofile-snapshots/ to limit the scope only to MicroProfile artifacts.
+
 
+
<pre>
+
        <repositories>
+
            <repository>
+
                <id>eclipse.microprofile</id>
+
                <name>Eclipse MicroProfile Repository</name>
+
                <url>https://repo.eclipse.org/content/repositories/snapshots/</url>
+
                <releases>
+
                    <enabled>false</enabled>
+
                </releases>
+
                <snapshots>
+
                    <enabled>true</enabled>
+
                </snapshots>
+
            </repository>
+
        </repositories>
+
</pre>
+

Latest revision as of 17:46, 26 January 2024

Releases repository

For releases, including milestone and candidate releases, the Maven Central repository is used. There's a common Jenkins job MicroProfile Releases to release any MicroProfile feature.

After a release is uploaded from Jenkins but before a release is published in Maven Central, usually a manual approval is required in Sonatype Nexus. Every committer is eligible to have access to the Sonatype Nexus with permission for the org.eclipse.microprofile artifact group prefix. If you are a committer and don't have access, do the following steps:

1. Register yourself in the public Sonatype Jira to get an account for both Sonatype Jira and Nexus

2. Create an issue to request access to the org.eclipse.microprofile artifact group prefix and mention that you're a committer to the MicroProfile project. As a reference, here's the original Jira for the group prefix. Link your new Jira issue to the original for reference.

Sonatype OSS releases repository

For projects using the new release process, you should release against Sonatype. Inheriting from the microprofile-parent will set this up for you, as long as you don't declare a repository section. Otherwise, the repository looks like:

    <distributionManagement>
        <repository>
            <id>ossrh</id>
            <name>Sonatype OSSRH - Release Staging Area</name>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
        <snapshotRepository>
            <id>ossrh</id>
            <name>Sonatype OSSRH Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <uniqueVersion>true</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

The Jenkins server is setup to be able to push to this repository. A committer would still need to login to Sonatype OSS to release the repository when its ready to be released.

Required POM Configuration

The following release profile should be present in all poms to be released via Jenkins

        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                         <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>1.6.3</version>
                        <extensions>true</extensions>
                        <configuration>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <serverId>ossrh</serverId>
                            <autoReleaseAfterClose>false</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.6</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

Sonatype Snapshot Repository

For all builds, the Sonatype OSS snapshot repository is used.

Back to the top