Nexus或Artifactory可以存储简单的tar.gz工件吗?

时间:2012-10-24 17:54:51

标签: deployment nexus artifactory artifacts

我的云服务器位于世界各地的不同数据中心。每个数据中心都与其他数据中心分开。

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

现在,我在运营方面工作。我不关心做构建或管理软件构建依赖性。我只想要一个工件服务器,我可以存储我的所有不同版本的软件包,以便以后访问。踢球者,我有几种不同类型的工件要存储。

  • Shell脚本
  • Python脚本
  • Puppet出现
  • Debian文件(通常作为多个debians的tar.gz文件提供)

Nexus或Artifactory可以管理所有这些类型的包裹,还是我应该朝不同的方向寻找?我不反对将make文件添加到我的shell脚本项目中,这些项目只生成tar.gz文件。我只是不想走下设置工件库的道路,最终,一个小脚本,wget和一个apache服务器可以正常工作。

5 个答案:

答案 0 :(得分:25)

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

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

尽管这两个工具都是通过解决Maven世界中的问题而开始的,但智能二进制管理的需求已在许多其他领域得到认可,operations included

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

另请参阅my answer to a similar question了解管理员与其他临时解决方案相比的一些好处。

答案 1 :(得分:5)

是的,您可以上传非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 :(得分:0)

答案 3 :(得分:0)

你可以(见其他答案)。你也可以像这样引用它们(虽然一个例子很好):

你可以像这个插件一样引用/使用它们:

  <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>

答案 4 :(得分:0)

Nexus 3 的解决方案。

首先在 Nexus 中创建一个 原始 存储库: Nexus Admin Console

然后您可以在 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