95992828九五至尊2

882828九五至尊手机版Maven for Eclipse 第二章 ——Maven的牵线

四月 10th, 2019  |  882828九五至尊手机版

  最近陷入与三个极其垃圾的连串无法自拔,好久未有创新小说了。明天简短介绍一下
Maven 在 Eclipse 中的使用。小说的始末差不离出于《Maven for
Eclipse》一书,此书提纲契领,实用性很强。

原稿地址:https://docs.gradle.org/4.1/userguide/publishing\_maven.html\#sec:the\_mavenpublish\_plugin
为上学gradle上传中应用maven上传aar jar artifact至maven仓库(私服or
mavenCentral)
ps:从三个程序员的角度翻译,应该更能让大家易于接受

  首先,Maven
是二个软件项目管理和顺序明白的工具,一般的话,软件项目管理包涵设计,组织,管理能源池,形成能源评估等。简单的话,Maven是3个完善的情势对使用方式的进程营造基础设备,它首要有如下目的:

目录

  • [36.1. The “maven-publish” Plugin] maven-publish插件介绍
  • [36.2. Publications]发版物
  • [36.3. Repositories]仓库
  • [36.4. Performing a publish]施行发表
  • [36.5. Publishing to Maven Local]揭橥到地面Maven仓库
  • [36.6. Generating the POM file without
    publishing]变化POM文件不注重发版

本章介绍由“maven-publish”插件提供的新的Maven发表扶助。
末了,那种新的问世协助将经过上传职责取代发表义务(及 maven_push 将取代
uploadArchives 任务)。

留意:此插件生成的成形的POM文件近年来不受帮助。
Gradle的将来版本可能会添加此功效。 请使用 Maven
plugin

将你的工件公布到Maven Central。

若果你正在利用上传职务查找原始Maven公布支持的文书档案(上传至mavenCentral),请参阅Chapter
32, Publishing
artifacts
.。

  • 简化程序的营造流程
  • 提供统一的塑造系统
  • 提供品质体系音讯
  • 提供了品种最好实战的辅导
  • 提供了晶莹剔透的点子迁移新特征
36.1. The “maven-publish” Plugin(maven_publish插件介绍)

以Maven格式发表的能力由“maven-publish”插件提供。

“publishing”插件在名字为 “publishing” 的
PublishingExtension项指标品种上创造了多个extension.此extension提供了二个命名发布的容器和三个命名仓库的容器。

“maven-publish”插件适用于
MavenPublication出版物和
MavenArtifactRepository存储库。

Example 36.1. Applying the ‘maven-publish’ plugin

build.gradle

apply plugin: 'maven-publish'

  为了实现上述指标,Maven提供了一组创设规范,工件库模型,三个发动机,描述项目,和2个正规的生命周期营造、测试,和配置项目工件。

36.贰. Publications(出版物介绍)

若是你素不相识项目artifacts和配置,则应阅读 Chapter 32, Publishing
artifacts
此地介绍了中央的概念。
本章还介绍了采纳分歧于本章所述机制的“publishing artifacts”。
这里描述的发表作用最后将顶替该意义。

对此“maven-publish”插件有其余影响,必须将MavenPublication
添加到该组宣布中。
此出版物明确实际发表的artifacts以及有关POM文件中隐含的详细信息。
能够经过丰裕组件,自定义务工作件以及一向修改生成的POM文件来布置发布。

  1.Maven 的原则

3陆.2.一. Publishing a Software Component(发表软件组件)

将Gradle项目揭破到Maven存储库的最简便易行的不2秘诀是点名要发布的SoftwareComponent。
近年来可供出版的零部件有:

882828九五至尊手机版 1

在以下示例中,工件和周转时注重关系取自Java插件添加的“java”组件。
Example 36.2. Adding a MavenPublication for a Java component

build.gradle

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

    Maven 的规格首要有以下几点:

3陆.2.2. Publishing custom artifacts(上传自定义artifacts)

也能够显式地安排要包含在颁发中的artifacts。
Artifacts平常作为土生土长文本提供,或作为AbstractArchiveTask
(e.g. Jar, Zip)的实例提供。

对此种种自定义artifact,能够钦命要用以发布的extension和classifier。
请注意,唯有多少个已宣布的工件能够拥有classifier,并且拥有其余artifacts必须具备唯1的classifier/extension组合。

配备自定义artifacts如下:
Example 36.3. Adding additional artifact to a MavenPublication

build.gradle

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourceJar {
                classifier "sources"
            }
        }
    }
}

关于怎么样自定义artifacts的更加多音讯,请参阅API文书档案中的MavenPublication
类。

    • 预定大于配置。Maven定义了暗许的体系结构和营造四个支付生命周期用来减轻开发负担。通过点名2个公然定义的模子,使项目便利精通。
    • 注脚式执行。Maven定义了一个品种创设的生命周期,包含壹类别的级差,这一个等级由plugin
      goal 组成。plugin goal能够包蕴申明pom文件来定制二个类其他履行。
    • 重用性。Maven建立与可重用性。建立和进行注明在叁个品种中能够选择不一致的品种。Maven也很简单创造1个组建并构成到两个种类中。
    • 清晰的重视关系。Maven负责依赖管理,从而收缩开发人士的负担。差别的冲突处理正视关系处理得没错。
    • 关注程序支付。标准的档次布局和塑造生命周期,不须要开发营造;首要应该集中在类型的塑造。
3陆.二.3. Identity values in the generated POM(POM文件生成及安顿)

转变的POM文件的品质将富含从以下体系性质派生的标识值:

蒙面暗许标识值很简短:在布局MavenPublication时,只需点名groupId,artifactId或版本属性即可。
Example 36.4. customizing the publication identity

build.gradle

publishing {
    publications {
        maven(MavenPublication) {
            groupId 'org.gradle.sample'
            artifactId 'project1-sample'
            version '1.1'

            from components.java
        }
    }
}

Maven将“groupId”和“artifactId”限制为零星的字符集([A-Za-z0-9 _ \ –
。] +)),并且Gradle强制执行此限制。
对于’version’(以及artifact’extension’和’classifier’),Gradle将拍卖别的有效的Unicode字符。

眼看不准的唯一Unicode值是“\”,“/”和其余ISO控制字符。
提供的价值在出版初期得到认证。

注意:有些存储库将不能处理全部帮助的字符。
例如,当在Windows上公布到文件系统援救的积存库时,’:’字符不可能用作标识符。

  二.Maven 的组装框架结构

3陆.贰.四. Modifying the generated POM(修改生成的POM)

变动的POM文件可能要求在发布在此以前开始展览调整。
“maven-publish”插件提供了一个钩子来允许那样的改动。
Example 36.5. Modifying the POM file

build.gradle

publications {
    mavenCustom(MavenPublication) {
        pom.withXml {
            asNode().appendNode('description',
                                'A demonstration of maven POM customization')
        }
    }
}

在这些例子中,大家为转移的POM添加了2个’description’元素。
使用此钩子,您能够修改POM的别样地点。
例如,您能够将借助关系的版本范围替换为用于转移构建的莫过于版本。

至于越来越多新闻,请参阅API文书档案中的MavenPom.withXml(org.gradle.api.Action))。

实际能够修改所开创的POM的别的方面。
那表示也得以修改POM,使其不再是卓有功用的Maven
POM,因而在动用此功用时务必小心。

发表模块的标识符(groupId,artifactId,version)是三个不相同;
这么些值不可能在POM中选拔withXML钩子修改。

    Maven 由下边多少个例外的组建创设而成:

36.二.伍. Publishing multiple modules(公布七个模块)

偶然,您能够从Gradle创设中公告多少个模块,而无需成立单独的Gradle子项目。
一个例证是为你的库公布独立的API和兑现jar。 使用Gradle那很简短:
Example 36.6. Publishing multiple modules from a single project

build.gradle

task apiJar(type: Jar) {
    baseName "publishing-api"
    from sourceSets.main.output
    exclude '**/impl/**'
}

publishing {
    publications {
        impl(MavenPublication) {
            groupId 'org.gradle.sample.impl'
            artifactId 'project2-impl'
            version '2.3'

            from components.java
        }
        api(MavenPublication) {
            groupId 'org.gradle.sample'
            artifactId 'project2-api'
            version '2'

            artifact apiJar
        }
    }
}

只要八个项目概念了多少个出版物,那么Gradle将会将这几个发布到定义的蕴藏库中。
每一个出版物必须怀有如上所述的唯1身份。

882828九五至尊手机版 2

36.3. Repositories(仓库)

出版物被揭橥到库房。 揭橥到的囤积库由
PublishingExtension.getRepositories()容器定义。
Example 36.7. Declaring repositories to publish to

build.gradle

publishing {
    repositories {
        maven {
            // change to point to your repo, e.g. http://my.org/repo
            url "$buildDir/repo"
        }
    }
}

用以申明存款和储蓄库以拓展公布的DSL是用于注解存款和储蓄库以从
RepositoryHandler选用正视关系的DSL。
不过,在Maven发表的内外文中,只能使用
MavenArtifactRepository仓库储存库举行发布。

        2.1 Plexus 容器

3陆.肆. Performing a publish(执行发表)

“maven-publish”插件会自动为publisher.publications和publishing.repositories容器中的每个MavenPublication和MavenArtifactRepository组合创制二个PublishToMavenRepository职务。

创办的天职名称叫“公布”publish«PUBNAME»PublicationTo«REPONAME»Repository“。

Example 36.8. Publishing a project to a Maven repository

build.gradle

apply plugin: 'java'
apply plugin: 'maven-publish'

group = 'org.gradle.sample'
version = '1.0'

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
publishing {
    repositories {
        maven {
            // change to point to your repo, e.g. http://my.org/repo
            url "$buildDir/repo"
        }
    }
}

Output of gradle publish

> gradle publish
:generatePomFileForMavenJavaPublication
:compileJava
:processResources NO-SOURCE
:classes
:jar
:publishMavenJavaPublicationToMavenRepository
:publish

BUILD SUCCESSFUL in 0s
4 actionable tasks: 4 executed

在此示例中,创制名称为“publishMavenJavaPublicationToMavenRepository”的天职,其项目为PublishToMavenRepository。
此职分已一连到颁布生命周期任务。 执行“gradle
publish”创设POM文件和要发布的拥有工件,并将它们传输到存款和储蓄库。

          Plexus 是三个 ICO
容器,提供了面向组件编制程序的章程去营造模块,重用的组装能够很不难地用来组装何重用。它援助如下的部分特性。

36.伍. Publishing to Maven Local发表到本地maven仓库)

为了与当地Maven安装实行合并,有时将模块公布到本地.m贰存款和储蓄库中是实惠的。
在Maven的布道中,那被叫做“安装”模块。
“maven-publish”插件通过在publishing.publications容器中为种种
MavenPublication机关创立3个
PublishToMavenLocal义务来促成那一点。
每一个那个职责都接二连三到publishToMavenLocal生命周期职务中。
你的publishing.repositories壹部分不须求mavenLocal

始建的职分名称叫“publish«PUBNAME»PublicationToMavenLocal“。

Example 36.9. Publish a project to the Maven local repository

Output of gradle publishToMavenLocal

> gradle publishToMavenLocal
:generatePomFileForMavenJavaPublication
:compileJava
:processResources NO-SOURCE
:classes
:jar
:publishMavenJavaPublicationToMavenLocal
:publishToMavenLocal

BUILD SUCCESSFUL in 0s
4 actionable tasks: 4 executed

此示例中生成的职分名字为“publishMavenJavaPublicationToMavenLocal”。
此任务已一而再到publishToMavenLocal生命周期任务中。 执行“gradle
publishToMavenLocal”营造POM文件和要发表的保有工件,并将它们“安装”到地面Maven存款和储蓄库中。

        • 组件生命周期
        • 组建1致性策略  
        • 嵌套的器皿
        • 零件配置
        • 自行织入
        • 零件正视
        • 多多借助注入技术,包括构造方法注入,setter
          方法注入,私有属性 注入。  
36.6. Generating the POM file without publishing

偶然在实际公布时为模块生成Maven POM文件是实用的。
由于POM生成由单独的职务执行,由此很不难实现。

浮动POM文件的任务是GenerateMavenPom项目,并且依照发表的称呼给出二个称谓:“generatePomFileFor«PUBNAME»Publication“。
所以在底下的例证中,出版物名称叫“mavenCustom”,任务将被命名称为“generatePomFileForMavenCustomPublication”。

Example 36.10. Generate a POM file without publishing

build.gradle

model {
    tasks.generatePomFileForMavenCustomPublication {
        destination = file("$buildDir/generated-pom.xml")
    }
}

Output of gradle generatePomFileForMavenCustomPublication

> gradle generatePomFileForMavenCustomPublication
:generatePomFileForMavenCustomPublication

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

公布模型的装有细节照旧在POM生成初级中学结业生升学考试虑,蕴涵组件,自定义务工作件以及通过pom.withXml进行的其他修改。

“maven-publish”插件利用了中期插件配置的1对尝试协助,任何GenerateMavenPom任务将不会被创设,直到配置揭橥增加。
当您尝试访问GenerateMavenPom职责时,确定保障发表插件配置的最简便的主意是将拜访放置在模型块中,如上所述。
一如既往适用于其余尝试访问特定于表露的任务,如PublishToMavenRepository.。
这几个职分应该在模型块内引用。

剧情如有错误仅供参考,后续给出使用实例

          越多音讯请访问:http://plexus.codehaus.org/.

        2.2 Wagon

           Maven Wagon 是叁个传输的虚幻用在 Maven artifact 和
仓库处理的代码中。Wagon 定义了合并的API,当前有如下供应者。

        • File
        • HTTP
        • HTTP lightweight
        • FTP
        • SSH/SCP
        • WebDAV

          越来越多音信请访问:https://maven.apache.org/wagon/.

        2.3 Maven Doxia

          Doxia是内容变更框架,为用户提供了强压的技术来变化静态内容和动态内容。Doxia还用于基于web的揭露上下文环境转变静态网址,仍是可以统一到动态内容生成连串,如博客、wiki和情节管理系统.

          更多音讯请访问:https://maven.apache.org/doxia/.

        2.4 Modello

          Maodllo 组件在 Maven 中用来变化不一致类型的 artifact
在营造时根据数模模型的引用。

        • 数据模型的 Java POJO类型
        • Java POJO 转换成 XML
        • XML 转换成 Java POJO
        • 数据模型的 XDOC 文书档案
        • XML schema 验证 XML 内容是还是不是合作数据模型

          越来越多内容请访问:http://maven.apache.org/maven-1.x/plugins/modello/.

       2.5 Maven SCM

        这些组件提供了常用的 API
来进行源代码管理操作,以下项目是被 SCM 所支撑的。

        • Bazaar
        • CVS
        • Git
        • Jazz
        • Mercurial
        • Perforce
        • StarTeam
        • Subversion
        • CM energy

        越多消息请访问:http://maven.apache.org/scm/.

 

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图