7 Nisan 2022 Perşembe

maven-publish Plugin - Artifactory veya Nexus'a Yükler

Giriş
Herhangi bir Maven repository sunucusuna jar ve pom dosyalarını yüklemek içindir. 

Tasks
Gradle menüsü altında şu menüleri görürüz
publishing
  publish : Artifactory veya Nexus'a Yükler
  publishToMavenLocal : Yerel Maven'a yükler

Örnek
Şöyle yaparız
plugins {
  id 'java-library'
  id 'maven-publish'
}
publications alanına
- earLibrary(MavenPublication)
- warLibrary(MavenPublication)
- mavenJava(MavenPublication)
gibi şeyler yazılır. Böylece neyi publish edeceğini anlar

repositories alanına
url ve authentication yazılır

Ear Dosyası
Örnek
Şöyle yaparız
plugins {
    id 'java-library'
    id 'maven-publish'
    id 'ear'
}

//Configure maven-publish plugin to publish ear file
publishing {

  publications {
    earLibrary(MavenPublication) {
      artifact ear
    }
  }
}

jar.enabled = false
War Dosyası
Örnek
Şöyle yaparız
plugins {
  id 'java-library'
  id 'maven-publish'
  id 'war'
}


//Configure maven-publish plugin to publish war file
publishing {

  publications {
    warLibrary(MavenPublication) {
      from components.web
    }
  }
}
jar.enabled = false
Jar Dosyası
Örnek
Şöyle yaparız
publishing {
  publications {

    mavenJava(MavenPublication) {
      artifactId = 'ms-commons'
      from components.java
      versionMapping {
        usage('java-api') {
          fromResolutionOf('runtimeClasspath')
        }
        usage('java-runtime') {
          fromResolutionResult()
        }
      }
      pom {
        name = 'MS Commons'
        description = 'A concise description of my library'
        url = 'http://www.example.com/library'
        licenses {
          license {
            name = 'The Apache License, Version 2.0'
            url =       'http://www.apache.org/licenses/LICENSE-2.0.txt'
          }
        }
        developers {
          developer {
            id = 'johnd'
            name = 'John Doe'
            email = 'john.doe@example.com'
          }
        }
      }
    }
  } //publications

  repositories {
    maven {
      name = "MyJfrog" //  optional target repository name
      url = "https://foo.jfrog.io/artifactory/my-repo"
      credentials {
        username = System.getenv('ARTIFACTORY_USERNAME')
        password = System.getenv('ARTIFACTORY_USER_PASSWORD')
      }
    }
  }
}
1. Seçenekler
publish
Jenkins ile şöyle yaparız
def shouldDeployToArtifactory() {
  return "${params.ARTIFACTORY_PUBLISH}" == "true"
}

if (shouldDeployToArtifactory()) {
  stage("Push to Artifactory") {
    echo "Publishing to Artifactory..."
    withCredentials([usernamePassword(
      credentialsId: 'ARTIFACTORY_PUBLISH',
      passwordVariable: 'ARTIFACTORY_PASSWORD', 
      usernameVariable: 'ARTIFACTORY_USER')
    ]) {
      runGradleSteps("publish")
    }
  }
}


2. Alanlar
repositories Alanı
Örnek
Şöyle yaparız
publishing {
  publications {
  }
  repositories {
    maven {
      name = "MyRepo" //  optional target repository name
      url = "http://my.org.server/repo/url"
      credentials {
        username = 'alice'
          password = 'my-password'
        }
      }
  }
}
Örnek
Şöyle yaparız
allprojects { 
  apply plugin: 'java' 
  apply plugin: 'maven-publish' 
  publishing { 
    publications { 
	     (MavenPublication) { 
	    from components.java 
	  } 
	} //publications 
	repositories { 
	  maven { 
	    url "s3://my.private.maven" 
		authentication { 
		  awsIm(AwsImAuthentication) 
		} //authentication 
	  } //maven" 
	} /repositories
  } //publishing 
} //allprojects
Çalıştırmak için şöyle yaparız
cp init-client.gradle build/client/init-client.gradle cd build/client && 
./gradlew --init-script init.gradle publish && 
cd -

Hiç yorum yok:

Yorum Gönder

Gradle Daemon Nedir?

Giriş Açıklaması  şöyle . Gradle Daemon arka planda çalışır. Çünkü Gradle'ı ayağa kaldırmak ve ilklendirmek çok uzun sürüyor.  Gradle ru...