Remove test files from the main source directory:
del "src\main\java\com\apigee\openapi\converter\ApigeeApiTest.java"
del "src\main\java\com\apigee\openapi\converter\InspectPolicies.java"mvn clean installEnsure:
- ✅ All tests pass
- ✅ No compilation errors
- ✅ JAR file is created in
target/
Edit pom.xml and update version number:
<version>1.0.0</version> <!-- Change if needed -->You have 3 options for sharing this library:
Best for: Making the library available to everyone via Maven/Gradle
- Go to https://issues.sonatype.org/
- Click "Sign up" (top right)
- Create account with your email
- Log in to Sonatype JIRA
- Click "Create" → Select "Community Support - Open Source Project Repository Hosting"
- Fill in:
- Summary: Request for com.apigee.openapi namespace
- Group Id:
com.apigee.openapi - Project URL: Your GitHub repo URL
- SCM URL: Your GitHub repo URL (e.g., https://github.com/yourusername/apigee-bundle-to-openapi)
- Username: Your Sonatype username
- Submit and wait for approval (usually 1-2 business days)
- They may ask you to verify domain ownership
# Install GPG (if not installed)
# Windows: Download from https://gpg4win.org/
# Generate GPG key
gpg --gen-key
# Follow prompts (use your email, create passphrase)
# List keys to get your key ID
gpg --list-keys
# Copy the key ID (8-character code)
# Distribute public key
gpg --keyserver keyserver.ubuntu.com --send-keys YOUR_KEY_IDCreate/edit C:\Users\YOUR_USERNAME\.m2\settings.xml:
<settings>
<servers>
<server>
<id>ossrh</id>
<username>YOUR_SONATYPE_USERNAME</username>
<password>YOUR_SONATYPE_PASSWORD</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase>YOUR_GPG_PASSPHRASE</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>Add to your pom.xml (after </dependencies>):
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!-- Existing plugins stay here -->
<!-- GPG Plugin for Signing -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Nexus Staging Plugin -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.13</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build># Deploy to staging
mvn clean deploy
# If autoReleaseAfterClose=false, manually release:
# 1. Go to https://oss.sonatype.org/
# 2. Log in
# 3. Click "Staging Repositories"
# 4. Find your repository
# 5. Click "Close" → "Release"- Central Sync: 2-4 hours
- Search Availability: Up to 24 hours
- Check at: https://search.maven.org/artifact/com.apigee.openapi/apigee-bundle-to-openapi
Best for: Sharing with developers who use GitHub
- Go to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Click "Generate new token (classic)"
- Give it a name: "Maven Package Publishing"
- Check scopes:
- ✅
write:packages - ✅
read:packages
- ✅
- Click "Generate token"
- Copy the token (you can't see it again!)
Add after </dependencies>:
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/YOUR_USERNAME/apigee-bundle-to-openapi</url>
</repository>
</distributionManagement>Edit C:\Users\YOUR_USERNAME\.m2\settings.xml:
<settings>
<servers>
<server>
<id>github</id>
<username>YOUR_GITHUB_USERNAME</username>
<password>YOUR_GITHUB_TOKEN</password>
</server>
</servers>
</settings>mvn clean deployUsers need to add to their pom.xml:
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/YOUR_USERNAME/apigee-bundle-to-openapi</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.apigee.openapi</groupId>
<artifactId>apigee-bundle-to-openapi</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>And configure their ~/.m2/settings.xml with their own GitHub token.
Best for: Internal company use
- Get Artifactory URL from your IT team
- Add to
pom.xml:
<distributionManagement>
<repository>
<id>artifactory</id>
<url>https://your-company.jfrog.io/artifactory/libs-release-local</url>
</repository>
</distributionManagement>- Configure
~/.m2/settings.xmlwith credentials - Deploy:
mvn clean deploy
Similar to Artifactory - get URL and credentials from IT.
- Go to your GitHub repository
- Click "Releases" → "Create a new release"
- Tag:
v1.0.0 - Title:
Apigee Bundle to OpenAPI Converter v1.0.0 - Description:
## Features
- Convert Apigee proxy bundles to OpenAPI 3.0
- Direct download from Apigee Management API
- Support for JWT/OKTA token validation
- Extracts API Key, OAuth2, and Basic Auth security
- YAML and JSON output
## Installation
Maven:
...xml...
Gradle:
...groovy...
## Usage
See [README.md](README.md) and [USAGE_EXAMPLES.md](USAGE_EXAMPLES.md)- Attach files:
target/apigee-bundle-to-openapi-1.0.0.jar - Click "Publish release"
Add to top of README.md:
[](https://search.maven.org/artifact/com.apigee.openapi/apigee-bundle-to-openapi)
[](LICENSE)- Tweet/LinkedIn post
- Post on relevant forums/Slack channels
- Add to Apigee community resources
- Check Maven settings.xml credentials
- Verify token/password hasn't expired
- For Maven Central: Ensure JIRA ticket is resolved
# List keys
gpg --list-keys
# Test signing
gpg --sign test.txt
# If passphrase wrong, re-configure in settings.xml- Check internet connection
- Verify repository URL is correct
- Check if version already exists (can't redeploy same version)
- Maven Central: Wait 2-24 hours
- GitHub Packages: Ensure they have access to the repository
- Check version number matches
Choose Maven Central if:
- ✅ Library is open source
- ✅ You want maximum reach
- ✅ You have time for setup (2-3 days initial)
Choose GitHub Packages if:
- ✅ You want quick publishing (minutes)
- ✅ Your users are on GitHub
- ✅ You're okay with GitHub-only distribution
Choose Corporate Maven if:
- ✅ Internal company library
- ✅ Company has Artifactory/Nexus
- ✅ You want access control
For this library, I recommend Maven Central because:
- It's an open-source utility library
- Apigee users worldwide could benefit
- Proper Maven Central hosting adds credibility
- No restrictions on who can use it
Timeline:
- Day 1: Submit Sonatype JIRA ticket, set up GPG
- Day 2-3: Wait for namespace approval
- Day 4: Deploy and release
- Day 5: Available to all Maven/Gradle users
Common issues:
- GPG: https://central.sonatype.org/publish/requirements/gpg/
- Maven Central Guide: https://central.sonatype.org/publish/publish-guide/
- GitHub Packages: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry
Good luck! 🚀