【问题标题】:Can Nexus or Artifactory store simple tar.gz artifacts?Nexus 或 Artifactory 可以存储简单的 tar.gz 工件吗?
【发布时间】:2012-10-14 19:57:33
【问题描述】:

我的云服务器位于世界各地的不同数据中心。每个数据中心都相互独立。

我正在寻找一种简单的方法来轻松且一致地将工件部署到每个区域中的各个服务器集群(可能运行不同版本的软件,即开发、测试和生产集群)。在我看来,我需要一个工件服务器,因为我可以在云服务器上执行一个安装脚本,它会下载正确的软件工件。

现在,我从事运营方面的工作。我不关心进行构建或管理软件构建依赖项。我只是想要一个工件服务器,我可以在其中存储我的包的所有不同版本以供以后访问。更重要的是,我要存储几种不同类型的工件。

  • Shell 脚本
  • Python 脚本
  • 木偶清单
  • Debian 文件(通常作为多个 debian 的 tar.gz 文件提供)

Nexus 或 Artifactory 可以管理所有这些类型的软件包,还是我应该换个方向?我不反对将 make 文件添加到仅生成 tar.gz 文件的 shell 脚本项目中。我只是不想走建立工件存储库的道路,最终,一点脚本、wget 和 apache 服务器就可以正常工作。

【问题讨论】:

    标签: deployment nexus artifactory artifacts


    【解决方案1】:

    是的,您可以上传非 jar 文件。例如:

    mvn deploy:deploy-file -DgroupId=org.group.id -DartifactId=artifact-id -Dversion=0.0.0.1-SNAPSHOT -Dpackaging=tar.gz -DrepositoryId=repository-id -Durl=http://url -Dfile=localfile-0.0.0.1-SNAPSHOT.tar.gz
    

    较新版本的 Nexus 将通过验证其格式是否正确来处理某些文件,例如 tar、swf 和其他文件。不过,这可能会导致意外或不需要的行为。

    这是最好的方法吗...只有您可以根据您的用例说。诸如工件更改频率、网络延迟等因素会影响策略的成败。

    参考:

    https://stackoverflow.com/a/33311645/32453

    http://betterlogic.com/roger/2012/04/mavennexus-upload-tgztar-gz-file/

    【讨论】:

      【解决方案2】:

      ArtifactoryNexus 都可以处理任何类型的文件,因为它们都是“二进制存储库管理器”

      尽管如此,Nexus 在技术上可以存储任何文件,但缺乏对不符合 Maven 存储库布局的二进制文件的支持。例如,此类文件不会被索引,也无法在搜索中检索到;此外,如果非 Maven 工件在其路径中阻碍了模块信息,那么目前 Artifactory 是唯一可以利用它并允许对工件进行基于版本的操作(例如,下载最新版本查询)的存储库

      尽管这两个工具都是从解决 Maven 世界中的一个问题开始的,但在许多其他领域(operations included)已经认识到对智能二进制管理的需求。

      二进制文件确实需要一个专门的管理器,虽然网络共享/SCM/文件服务器在一开始似乎是一个可行的选择;他们只是不扩展

      另请参阅my answer to a similar question,了解经理相对于其他临时解决方案的一些好处。

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          您可以(请参阅其他答案)。您也可以像这样引用它们(尽管举个例子很好):

          您可以像这个插件一样参考/使用它们:

            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-dependency-plugin</artifactId>
              <executions>
                <execution>
                  <id>copy</id>
                  <phase>package</phase>
                  <goals>
                    <goal>copy</goal>
                  </goals>
                  <configuration>
                    <artifactItems>
                      <artifactItem>
                        <groupId>org.apache</groupId>
                        <artifactId>activemq-distro</artifactId>
                        <version>5.7.0</version>
                        <type>gz</type>
                        <overWrite>true</overWrite>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                      </artifactItem>
                    </artifactItems>
                    <!-- other configurations here -->
                  </configuration>
                </execution>
              </executions>
            </plugin>
          

          【讨论】:

            【解决方案5】:

            Nexus 3 的解决方案。

            首先在 Nexus 中创建一个 raw 存储库:

            然后你可以在 ma​​ven 或通过 curl 使用它。

            示例来自 curl:

            curl -v --user '$NEXUS_REGISTRY_USER:$NEXUS_REGISTRY_PASSWORD' --upload-file ./my_artifact.tar.gz $NEXUS_GENERAL_REPOSITORY_URL/general-raw/my-project/my_artifact.tar.gz
            

            更多信息here

            【讨论】:

              猜你喜欢
              • 2014-10-20
              • 2011-03-14
              • 1970-01-01
              • 1970-01-01
              • 2014-07-12
              • 2019-01-14
              • 1970-01-01
              • 1970-01-01
              • 2011-08-25
              相关资源
              最近更新 更多