Ven*_*kat 6 groovy jar artifactory gradle
我有一个Groovy项目,我正在尝试使用Gradle构建它.首先,我想要一个package
通过根据其依赖项编译JAR来创建JAR 的任务.然后我需要为该JAR生成Maven POM并将JAR/POM发布到内部Artifactory仓库.的build.gradle
:
apply plugin: "groovy"
apply plugin: "maven-publish"
repositories {
maven {
name "artifactory01"
url "http://myartifactory/artifactory/libs-release"
}
}
dependencies {
compile "long list starts here"
}
// Should compile up myapp-<version>.jar
jar {
}
// Should publish myapp-<version>.jar and its (generated) POM to our in-house Maven/Artifactory repo.
publishing {
publications {
myPublication(MavenPublication) {
from components.java
artifact sourceJar {
classifier "source"
}
pom.withXml {
// ???
}
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Run Code Online (Sandbox Code Playgroud)
不过,我不认为我已经建立了我的正确版本jar
的任务(例如,我怎么能拿它创造myapp-1.2.1
主场迎战myapp-1.2.2
?我也并不认为我有我的publications
配置设置是否正确:在又该何去何从pom.withXml
?
JBa*_*uch 12
非常欢迎您使用artifactory
插件.该文档可以在我们的用户指南中找到,您可以在下面找到一个完整的gradle构建示例.
运行gradle build artifactoryPublish
以构建和发布项目.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '3.0.1')
}
}
apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'
group = 'com.jfrog.example'
version = '1.2-SNAPSHOT'
status = 'SNAPSHOT'
dependencies {
compile 'org.slf4j:slf4j-api:1.7.5'
testCompile 'junit:junit:4.11'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
publishing {
publications {
main(MavenPublication) {
from components.java
artifact sourcesJar
}
}
artifactory {
contextUrl = 'http://myartifactory/artifactory'
resolve {
repository {
repoKey = 'libs-release'
}
}
publish {
repository {
repoKey = 'libs-snapshot-local'
username = 'whatever'
password = 'whatever123'
}
defaults {
publications 'main'
}
}
}
Run Code Online (Sandbox Code Playgroud)
package
是 Java/Groovy 中的关键字,您必须使用不同的语法来声明具有该名称的任务。
package
无论如何,应该删除 的任务声明,因为该jar
任务已经达到了这个目的。任务jar
配置 ( jar { from ... }
) 应该位于最外层(不嵌套在另一个任务中),但这from configurations.compile
不太可能是您想要的,因为这会将编译依赖项的 Jar 包含到 Jar 中(常规 Java 类加载器无法处理),而不是将它们合并到 Jar 中。(你确定你需要一个胖罐子吗?)
同样,publish
任务声明应该被删除,并替换为publishing { publications { ... } }
.
此外,该buildscript
块可能应该被删除,并repositories { ... }
移动dependencies { ... }
到最外层。(buildscript { dependencies { ... } }
声明构建脚本本身的依赖项(例如 Gradle 插件),而不是要编译/运行的代码的依赖项。)
samples
我建议查看完整 Gradle 发行版目录中的许多独立示例构建( gradle-all
)。
归档时间: |
|
查看次数: |
4598 次 |
最近记录: |