栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在常规Maven构建中使用Eclipse p2存储库中的依赖项吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在常规Maven构建中使用Eclipse p2存储库中的依赖项吗?

好像我在回答另一个自己的问题..

首先,您可以使用Tycho在P2存储库中添加对包的依赖关系:

  • 配置构建以使用tycho-maven-plugin。
  • 指定一个P2存储库。
  • 将包装设置为“ eclipse-plugin”。
  • 为您的构建创建一个清单,并使用Require-Bundle声明依赖关系(例如org.eclipse.xsd)。还要将Bundle-Version设置为我们在pom.xml中用于构建的版本。

让我们尝试一下:

$ mvn dependency:tree[INFO] com.example:org.eclipse.xsd:eclipse-plugin:0.0.1[INFO] +- p2.eclipse-plugin:org.eclipse.xsd:jar:2.6.0.v20100914-1218:system[INFO] ...[INFO] - p2.eclipse-plugin:org.eclipse.core.filesystem:jar:1.3.1.R36x_v20100727-0745:system

我们的依赖关系已从P2存储库成功解决。不幸的是,我们还没有完成。依赖项已添加到系统范围中,这意味着如果我们创建依赖于构建的Web应用程序,则不会包含工件。要解决此问题,我们首先将依赖项中包含的所有类解压缩到某个目录,然后将该目录重新打包为jar并将其用作构建的最终产物。

对于第一部分(解包),我们将maven-dependency-
plugin添加到我们的构建中,并将其配置为在打包阶段运行其解包依赖性目标。对于第二部分(重新打包),我们将maven-assembly-
plugin添加到我们的构建中,并将其配置为在打包阶段运行其单个目标。我们还需要创建和配置自定义程序集描述符。

现在,我们的构建包含3个文件:pom.xml中的构建文件:

<project>    <modelVersion>4.0.0</modelVersion>    <groupId>com.example</groupId>    <artifactId>org.eclipse.xsd</artifactId>    <version>0.0.1</version>    <packaging>eclipse-plugin</packaging>    <repositories>        <repository> <id>helios</id> <layout>p2</layout> <url>http://download.eclipse.org/releases/helios</url>        </repository>    </repositories>    <build>        <plugins> <plugin>     <groupId>org.eclipse.tycho</groupId>     <artifactId>tycho-maven-plugin</artifactId>     <version>0.12.0</version>     <extensions>true</extensions> </plugin> <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-dependency-plugin</artifactId>     <executions>         <execution>  <id>unpack-dependencies</id>  <phase>package</phase>  <goals>      <goal>unpack-dependencies</goal>  </goals>  <configuration>      <outputDirectory>${project.build.directory}/dependency</outputDirectory>      <overWriteReleases>false</overWriteReleases>      <overWriteSnapshots>true</overWriteSnapshots>  </configuration>         </execution>     </executions> </plugin> <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-assembly-plugin</artifactId>     <version>2.2.1</version>     <configuration>         <descriptors>  <descriptor>src/main/assembly/repackaged.xml</descriptor>         </descriptors>     </configuration>     <executions>         <execution>  <id>make-assembly</id>  <phase>package</phase>  <goals>      <goal>single</goal>  </goals>         </execution>     </executions> </plugin>        </plugins>    </build></project>

meta-INF / MANIFEST.MF中的清单:

Manifest-Version: 1.0Bundle-ManifestVersion: 2Bundle-Name: IgnoredBundle-SymbolicName: IgnoredBundle-Version: 0.0.1Require-Bundle: org.eclipse.xsdBundle-Vendor: Ignored

src / main / assembly / repackaged.xml中的程序集描述符:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">    <id>repackaged</id>    <formats>        <format>jar</format>    </formats>    <includebaseDirectory>false</includebaseDirectory>    <fileSets>      <fileSet>        <directory>${project.build.directory}/dependency/</directory>        <outputDirectory>/</outputDirectory>        <useDefaultExcludes>true</useDefaultExcludes>      </fileSet>    </fileSets></assembly>

现在,mvn软件包将创建一个jar文件,其中包含来自我们P2依赖项的所有代码,并将其重新打包为适当的Maven工件,准备在另一个项目中用作依赖项。

$ jar tf target/org.eclipse.xsd-0.0.1-repackaged.jar org/eclipse/xsd/ecore/XSDEcoreBuilder$1.classorg/eclipse/xsd/ecore/XSDEcoreBuilder$2.classorg/eclipse/xsd/ecore/XSDEcoreBuilder$Comparator.classorg/eclipse/xsd/ecore/XSDEcoreBuilder$EffectiveOccurrence.classorg/eclipse/xsd/ecore/XSDEcoreBuilder.class


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号