使用gradle发布工件(使用源代码和javadoc)
我试图创建一个gradle文件来发布我的工件(使用gradle发布工件(使用源代码和javadoc),java,gradle,Java,Gradle,我试图创建一个gradle文件来发布我的工件(.jar,sources.jar和javadoc.jar) 到目前为止,我已经能够编写这个gradle文件: plugins { id 'java' id 'eclipse' id 'maven-publish' id 'net.nemerosa.versioning' version '2.5.1' } targetCompatibility = 1.8 eclipse { project {
.jar
,sources.jar
和javadoc.jar
)
到目前为止,我已经能够编写这个gradle文件:
plugins {
id 'java'
id 'eclipse'
id 'maven-publish'
id 'net.nemerosa.versioning' version '2.5.1'
}
targetCompatibility = 1.8
eclipse {
project {
name = 'OAuthz Library'
natures 'org.eclipse.buildship.core.gradleprojectnature'
}
classpath {
downloadSources = true
downloadJavadoc = true
defaultOutputDir = file('build-eclipse')
}
jdt {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'javax.servlet:javax.servlet-api:3.1.0'
compile 'org.codehaus.jettison:jettison:1.3.7'
compile 'org.apache.directory.api:api-all:1.0.0-M30'
compile 'com.whalin:Memcached-Java-Client:3.0.2'
compile group: 'org.mongodb', name: 'mongo-java-driver', version: '2.14.3'
compile 'commons-configuration:commons-configuration:1.10'
}
group = 'com.living'
version = versioning.info.display
manifest {
attributes 'Implementation-Title': 'OAuthz Library'
}
publishing {
publications {
mavenJava(MavenPublication) {
}
}
repositories {
maven {
credentials {
username 'user'
password 'passwd'
}
url "$url"
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '3.1'
}
我已经能够在存储库上发布我的包,但是:
:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
...
2) 您需要首先创建工件:
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
然后将工件包括到出版物中:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourcesJar
artifact javadocJar
}
}
...
我使用
如果您不想使用这些插件,可以使用
有关源代码和javadoc Publishing的信息,请参阅。本文仅与如何生成工件相关。不过,我已经看到了这一点,我不太清楚如何在我的maven存储库中发布它们。那么“普通”jar工件呢?与之相比,我认为还有一些事情需要设置,我已经看过这本手册了。尽管如此,我还不知道还有什么剩余。谢谢@blackbuild。我不太明白什么是组件。java
指的是。。。正如您所看到的,我在脚本中将其留空。@Jordi Its说使用组件名java。这个插件由java插件自动定义,默认情况下包括main/java/中的所有类。对于War项目,这将是components.web
。现在它告诉我这样一条消息:执行模型规则时引发异常:PublishingPlugin.Rules#publishing(ExtensionContainer)>在发布容器上找不到参数[task]:sourcesJar']的方法工件()
plugins {
id 'nebula.javadoc-jar' version '4.4.4'
id 'nebula.source-jar' version '4.4.4'
}
tasks.create('sourceJar', Jar) {
dependsOn tasks.classes
from sourceSets.main.allSource
classifier 'sources'
extension 'jar'
group 'build'
}
publishing {
publications {
nebula(MavenPublication) { // if maven-publish is applied
artifact tasks.sourceJar
}
nebulaIvy(IvyPublication) { // if ivy-publish is applied
artifact tasks.sourceJar
}
}
}