# Erato Rate Limit Starter - Yayınlama Rehberi
## 🏠 Local Maven Repository
En basit yöntem - diğer projelerinizde hemen kullanabilirsiniz:
```bash
mvn clean install
```
## 🏢 Private Nexus/Artifactory
### 1. pom.xml'e distribution management ekleyin:
```xml
erato-releases
https://nexus.erato.com.tr/repository/maven-releases/
erato-snapshots
https://nexus.erato.com.tr/repository/maven-snapshots/
```
### 2. Deploy:
```bash
mvn clean deploy
```
## 🐙 GitHub Packages
### 1. pom.xml güncelleme:
```xml
github
GitHub Packages
https://maven.pkg.github.com/erato/rate-limit-starter
```
### 2. GitHub Actions workflow (.github/workflows/maven-publish.yml):
```yaml
name: Publish Package
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Publish to GitHub Packages
run: mvn deploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
## 🗂️ Shared File System
Küçük takımlar için basit çözüm:
### 1. pom.xml:
```xml
file-repo
file:///shared/maven-repo
```
### 2. Deploy:
```bash
mvn clean deploy
```
### 3. Diğer projelerde kullanım:
```xml
shared-repo
file:///shared/maven-repo
```
## 🐳 Docker Registry (JIB)
### 1. pom.xml'e JIB plugin ekleyin:
```xml
com.google.cloud.tools
jib-maven-plugin
3.3.2
registry.erato.com.tr/rate-limit-starter:${project.version}
```
### 2. Build & Push:
```bash
mvn compile jib:build
```
## 📦 Manual JAR Distribution
### 1. JAR oluştur:
```bash
mvn clean package
```
### 2. Diğer projelerde kullanım:
```bash
# JAR'ı lib klasörüne kopyala
mkdir -p lib
cp erato-rate-limit-spring-boot-starter-1.0.0.jar lib/
# pom.xml'e system dependency ekle
tr.com.erato
erato-rate-limit-spring-boot-starter
1.0.0
system
${project.basedir}/lib/erato-rate-limit-spring-boot-starter-1.0.0.jar
```
## 🔑 Güvenlik
Repository credentials için environment variables kullanın:
```bash
export NEXUS_USERNAME=your-username
export NEXUS_PASSWORD=your-password
mvn deploy
```
Veya `~/.m2/settings.xml` dosyasında saklayın.
## 🏷️ Versioning
Semantic versioning kullanın:
- **1.0.0** - İlk stable release
- **1.0.1** - Bug fixes
- **1.1.0** - Yeni özellikler (backward compatible)
- **2.0.0** - Breaking changes
Version güncelleme:
```bash
mvn versions:set -DnewVersion=1.0.1
mvn versions:commit
```
## 📋 Release Checklist
- [ ] Testler geçiyor mu? `mvn test`
- [ ] Javadoc complete mi? `mvn javadoc:javadoc`
- [ ] README güncel mi?
- [ ] CHANGELOG eklendi mi?
- [ ] Version number doğru mu?
- [ ] Tag oluşturuldu mu? `git tag v1.0.0`
- [ ] Deploy edildi mi? `mvn deploy`