【问题标题】:Checkout file from another repo using maven-scm plugin使用 maven-scm 插件从另一个仓库签出文件
【发布时间】:2018-07-11 22:02:39
【问题描述】:

我在 git repo RepoA 中有一个 java 应用程序,并为此 repo 设置了 scm 配置,用于 maven-release 插件等。 我想从另一个 RepoB 获取一个文件(也可以签出整个 repo,因为那里只有一个文件)并将其用作构建步骤的一部分。 如果已经为 RepoA 设置了 scm 部分,如何使用 maven-scm 插件?

谢谢。

【问题讨论】:

  • 为什么?这个文件有什么目的?为什么它不在您的存储库中?
  • @khmarbaise 是客户端和服务器应用程序用来生成类的模式文件。所以它在一些单独的仓库中(不是客户端或服务器)。
  • 最好是创建一个单独的项目,其中包含架构文件并生成类,最后制作一个可消耗的 jar 文件.....
  • 我们为 java 和 c# 生成,所以想只共享架构并在服务器或客户端应用程序内部生成

标签: maven maven-scm


【解决方案1】:

您可以为此任务使用单独的 Maven 配置文件。
这是来自pom.xml 的配置文件部分,假设您要从github repo github-user/some-repo 获取文件foo/bar.txt

<profile>
    <id>checkout-foo-bar</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-plugin</artifactId>
                <version>1.11.2</version>
                <configuration>
                    <connectionUrl>scm:git:git@github.com:github-user/some-repo</connectionUrl>
                    <includes>foo/bar.txt</includes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

然后运行mvn scm:checkout -P checkout-foo-bar

插件首先从 repo 中获取所有文件,然后删除您不需要的文件。这需要额外的时间,尤其是在 repo 很大的情况下。

除了默认的target/checkout,我没有找到设置输出目录的方法。但希望这个工作示例可以成为解决问题的良好起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多