Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用p2maven插件有效地管理第三方依赖关系?_Java_Eclipse_Maven_Dependencies_Eclipse Rcp - Fatal编程技术网

Java 如何使用p2maven插件有效地管理第三方依赖关系?

Java 如何使用p2maven插件有效地管理第三方依赖关系?,java,eclipse,maven,dependencies,eclipse-rcp,Java,Eclipse,Maven,Dependencies,Eclipse Rcp,为了管理Eclipse RCP应用程序(使用Tycho构建)中的第三方依赖关系,我使用p2 maven插件和Jetty将maven central构件转换为捆绑包,并在目标定义文件中将其作为p2存储库提供。我的设置和工作流程如下: 在p2maven插件的artifacts部分添加依赖项 运行目标p2:重建整个站点的站点 运行码头 重新加载目标 现在我的依赖项在清单文件的依赖项部分中可用 所以我有3个问题: 每次我想添加一个新的依赖项时,我必须重建站点并重新启动Jetty,是否有一种方法可以

为了管理Eclipse RCP应用程序(使用Tycho构建)中的第三方依赖关系,我使用p2 maven插件和Jetty将maven central构件转换为捆绑包,并在目标定义文件中将其作为p2存储库提供。我的设置和工作流程如下:

  • 在p2maven插件的artifacts部分添加依赖项
  • 运行目标p2:重建整个站点的站点
  • 运行码头
  • 重新加载目标
  • 现在我的依赖项在清单文件的依赖项部分中可用
所以我有3个问题:

  • 每次我想添加一个新的依赖项时,我必须重建站点并重新启动Jetty,是否有一种方法可以通过添加pom中提到的新依赖项来更新存储库
  • 以下设置是否适用于有多个项目的公司:
    • 为每个项目创建一个(特定的第三方)远程P2存储库,并相应地配置项目的目标定义
    • 当团队成员需要第三方库时,他可以使用p2maven插件生成bundle,将它们推送到远程存储库中,并清理pom的工件部分
总之,您如何管理团队中的第三方依赖关系?

  • 问题是,在构建p2站点时,还将生成包含bundels信息的“context.xml”和“artifact.xml”元数据。p2解析器用于在捆绑包中解析的这些元数据。因此,我认为如果不重建网站,更新p2回购协议将是一个艰难的过程

    我的建议:因为您在团队中工作,所以最明确的方法是为所有第三方依赖项提供一个独立的存储库(nexus、jetty、tomcat…)(您可以使用

    部署重新创建的p2不是什么大事,您可以在创建站点的同一pom中使用
    wagon maven plugin
    ,并将其绑定到部署阶段,因此使用
    mvn clean deploy
    可以创建和部署存储库

例如:

<build>
<plugins>
    <plugin>
        <groupId>org.reficio</groupId>
        <artifactId>p2-maven-plugin</artifactId>
        <version>1.2.0-SNAPSHOT</version>
        <executions>
            <execution>
                <id>default-cli</id>
                <configuration>
                    <artifacts>
                        <!-- specify your depencies here -->
                        <!-- groupId:artifactId:version -->
                        <artifact><id>commons-io:commons-io:2.1</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.4</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.5</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.6</id></artifact>
                        <artifact><id>org.apache.commons:commons-lang3:3.1</id></artifact>
                    </artifacts>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>wagon-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <id>upload-repo</id>
                <phase>deploy</phase>
                <goals>
                    <goal>upload</goal>
                </goals>
                <configuration>
                    <fromDir>${project.build.directory}/repository/</fromDir>
                    <includes>*/**</includes>
                    <serverId>my-p2-repository</serverId>
                    <url>dav:http://mycompany.com/../content/repositories</url>
                    <toDir>thirdparty-p2-repository</toDir>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav-jackrabbit</artifactId>
        <version>1.0-beta-7</version>
    </extension>
</extensions>

org.reficio
p2maven插件
1.2.0-快照
默认cli
commons io:commons io:2.1
公共语言:公共语言:2.4
公共语言:公共语言:2.5
公共语言:公共语言:2.6
org.apache.commons:commons-lang3:3.1
org.codehaus.mojo
货车司机插件
1
上传回购
部署
上传
${project.build.directory}/repository/
*/**
my-p2-repository
dav:http://mycompany.com/../content/repositories
第三方-p2-存储库
org.apache.maven.wagen
大篷车
1.0-beta-7


my-p2-repository
dav:http://mycompany.com/../content/repositories
注意:pom的distributionManagement部分中URL的ID需要与settings.xml文件中服务器部分的ID匹配

在settings.xml中添加服务器:

<server>
 <id>my-p2-repository</id>
 <username>...</username>
 <password>...</password>
</server>

my-p2-repository
...
...
希望这有帮助。

  • 问题是,在构建p2站点时,还将生成包含bundels信息的“context.xml”和“artifact.xml”元数据。p2解析器用于在捆绑包中解析的这些元数据。因此,我认为如果不重建网站,更新p2回购协议将是一个艰难的过程

    我的建议:因为您在团队中工作,所以最明确的方法是为所有第三方依赖项提供一个独立的存储库(nexus、jetty、tomcat…)(您可以使用

    部署重新创建的p2不是什么大事,您可以在创建站点的同一pom中使用
    wagon maven plugin
    ,并将其绑定到部署阶段,因此使用
    mvn clean deploy
    可以创建和部署存储库

例如:

<build>
<plugins>
    <plugin>
        <groupId>org.reficio</groupId>
        <artifactId>p2-maven-plugin</artifactId>
        <version>1.2.0-SNAPSHOT</version>
        <executions>
            <execution>
                <id>default-cli</id>
                <configuration>
                    <artifacts>
                        <!-- specify your depencies here -->
                        <!-- groupId:artifactId:version -->
                        <artifact><id>commons-io:commons-io:2.1</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.4</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.5</id></artifact>
                        <artifact><id>commons-lang:commons-lang:2.6</id></artifact>
                        <artifact><id>org.apache.commons:commons-lang3:3.1</id></artifact>
                    </artifacts>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>wagon-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <id>upload-repo</id>
                <phase>deploy</phase>
                <goals>
                    <goal>upload</goal>
                </goals>
                <configuration>
                    <fromDir>${project.build.directory}/repository/</fromDir>
                    <includes>*/**</includes>
                    <serverId>my-p2-repository</serverId>
                    <url>dav:http://mycompany.com/../content/repositories</url>
                    <toDir>thirdparty-p2-repository</toDir>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav-jackrabbit</artifactId>
        <version>1.0-beta-7</version>
    </extension>
</extensions>

org.reficio
p2maven插件
1.2.0-快照
默认cli
commons io:commons io:2.1
公共语言:公共语言:2.4
公共语言:公共语言:2.5
公共语言:公共语言:2.6
org.apache.commons:commons-lang3:3.1
org.codehaus.mojo
货车司机插件
1
上传回购
部署
上传
${project.build.directory}/repository/
*/**
my-p2-repository
dav:http://mycompany.com/../content/repositories
第三方-p2-存储库
org.apache.maven.wagen
大篷车
1.0-beta-7


my-p2-repository
dav:http://mycompany.com/../content/repositories
注意:pom的distributionManagement部分中URL的ID需要与settings.xml文件中服务器部分的ID匹配

在settings.xml中添加服务器:

<server>
 <id>my-p2-repository</id>
 <username>...</username>
 <password>...</password>
</server>

my-p2-repository
..