日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在2017年从Maven工件生成P2存储库

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在2017年从Maven工件生成P2存储库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾年前,我寫了一篇博客文章,介紹如何基于Maven工件生成P2存儲庫。 如今,這種描述的方法已經過時了,我想展示一種基于p2-maven-plugin的新方法,該方法是為解決該問題而創建的。

Maven構建生命周期中的P2-Maven-Plugin集成

首先,我們將p2-maven-plugin的目標站點綁定到Maven的生命周期階段包 。 該目標負責生成P2存儲庫。

<plugin><groupId>org.reficio</groupId><artifactId>p2-maven-plugin</artifactId><version>1.3.0</version><executions><execution><id>default-cli</id><phase>package</phase><goals><goal>site</goal></goals><!--... --></execution></executions> </plugin>

生成P2存儲庫

現在,我們可以定義哪些Maven工件應該成為新P2存儲庫的一部分。 如果已定義的工件已經有OSGi清單,則與p2-maven插入無關。 如果不存在OSGi清單,則該插件將生成一個清單。

<execution> <!-- ... --> <configuration><artifacts><!-- specify your dependencies here --><!-- groupId:artifactId:version --><artifact><id>com.google.guava:guava:jar:23.0</id><!-- Artifact with existing OSGi-Manifest--></artifact><artifact><id>commons-io:commons-io:1.3</id><!-- Artifact without existing OSGi-Manifest--></artifact></artifacts> </configuration> </execution>

工件由模式groupId:artifactId:version指定 。 如果你想節省一些打字,請使用Buildr標簽MVN庫網站對復制權依賴性聲明的格式。

此樣本配置創建一個P2存儲庫,其外觀類似于以下內容:

target/repository ├── artifacts.jar ├── category.xml ├── content.jar └── plugins├── com.google.code.findbugs.jsr305_1.3.9.jar├── com.google.errorprone.error_prone_annotations_2.0.18.jar├── com.google.guava_23.0.0.jar├── com.google.j2objc.annotations_1.1.0.jar├── commons-io_1.3.0.jar└── org.codehaus.mojo.animal-sniffer-annotations_1.14.0.jar1 directory, 9 files

插件的默認行為是,還將下載已定義工件的所有傳遞依賴項,并將其打包到P2存儲庫中。 如果您不想要它,則必須在相應的工件聲明中將選項transitive設置為false 。 如果需要P2存儲庫中已定義工件的源(如果它們存在于Maven存儲庫中),則必須在對應的工件聲明中將選項源設置為true 。

<!-- ... --> <artifact><id>com.google.guava:guava:jar:23.0</id><transitive>false</transitive><source>true</source> </artifact> <!-- ... -->

然后,生成的P2存儲庫如下所示:

target/repository ├── artifacts.jar ├── category.xml ├── content.jar └── plugins├── com.google.guava.source_23.0.0.jar├── com.google.guava_23.0.0.jar└── commons-io_1.3.0.jar1 directory, 6 files

使用分組工件生成P2存儲庫

在某些情況下,您希望將工件歸為所謂的feature 。 p2-maven-plugin提供了一個選項,可以將Maven工件直接分組為功能。 工件的定義與上面相同。 不同之處在于它必須在對應的功能內。 然后,要素定義需要一些元數據信息,例如要素ID,要素版本,描述等。

<!-- ...--> <configuration><featureDefinitions><feature><!-- Generate a feature including artifacts that are listed below inside the feature element--><id>spring.feature</id><version>4.3.11</version><label>Spring Framework 4.3.11 Feature</label><providerName>A provider</providerName><description>${project.description}</description><copyright>A copyright</copyright><license>A licence</license><artifacts><artifact><id>org.springframework:spring-core:jar:4.3.11.RELEASE</id>id></artifact><artifact><id>org.springframework:spring-context:jar:4.3.11.RELEASE</id>id><source>true</source></artifact></artifacts></feature><!--...--></featureDefinitions><!-- ... --> <configuration>

然后,生成的P2存儲庫如下所示:

target/repository ├── artifacts.jar ├── category.xml ├── content.jar ├── features │ └── spring.feature_4.3.11.jar └── plugins├── org.apache.commons.logging_1.2.0.jar├── org.springframework.spring-aop.source_4.3.11.RELEASE.jar├── org.springframework.spring-aop_4.3.11.RELEASE.jar├── org.springframework.spring-beans.source_4.3.11.RELEASE.jar├── org.springframework.spring-beans_4.3.11.RELEASE.jar├── org.springframework.spring-context.source_4.3.11.RELEASE.jar├── org.springframework.spring-context_4.3.11.RELEASE.jar├── org.springframework.spring-core_4.3.11.RELEASE.jar├── org.springframework.spring-expression.source_4.3.11.RELEASE.jar└── org.springframework.spring-expression_4.3.11.RELEASE.jar2 directories, 14 files

當然,這兩種選擇(使用功能生成p2存儲庫,并且僅使用插件生成)可以混合使用。

p2-maven-plugin提供了更多選項,例如排除特定的傳遞依賴項,引用其他Eclipse功能等。 有關更多信息,請查看p2-maven-plugin主頁。

現在,我們可以從Maven工件生成P2存儲庫。 我們缺少如何將此P2存儲庫部署到Artifactory或Sonatype Nexus等存儲庫管理器的方法。 兩種存儲庫管理器都支持P2存儲庫,Professional版本中的Artifactory(需要付費)和OSS版本中的Sonatype Nexus(免費)。 對于Nexus,重要的是使用2.x版本。 最新版本3.x尚不支持P2存儲庫。

將P2存儲庫部署到存儲庫管理器

首先,我們希望將生成的P2存儲庫打包到一個zip文件中。 因此,我們將tycho-p2-repository-plugin添加到Maven構建生命周期:

<plugin><groupId>org.eclipse.tycho</groupId><artifactId>tycho-p2-repository-plugin</artifactId><version>1.0.0</version><executions><execution><phase>package</phase><goals><goal>archive-repository</goal></goals></execution></executions> </plugin>

然后,我們必須標記該zip文件,以便Maven認識到它必須在部署階段將其部署到存儲庫管理器。 為此,我們將build-helper-maven-plugin添加到Maven構建生命周期。

<!-- Attach zipped P2 repository to be installed and deployed in the Maven repository during the deploy phase. --> <plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>3.0.0</version><executions><execution><goals><goal>attach-artifact</goal></goals><configuration><artifacts><artifact><file>target/${project.artifactId}-${project.version}.zip</file><type>zip</type></artifact></artifacts></configuration></execution></executions> </plugin>

現在,生成的P2存儲庫可以由其他項目處理。 有關如何處理P2存儲庫的更多信息,請查看存儲庫管理器的文檔。

可以在Github上找到整個pom.xml示例。

鏈接

  • 2013年的舊博客文章
  • P2 Maven插件
  • Github上示例的完整源代碼

翻譯自: https://www.javacodegeeks.com/2017/09/generate-p2-repository-maven-artifacts-2017.html

總結

以上是生活随笔為你收集整理的在2017年从Maven工件生成P2存储库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。