Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
Deployment Nexus或Artifactory可以存储简单的tar.gz工件吗?_Deployment_Nexus_Artifactory_Artifacts - Fatal编程技术网

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

Deployment Nexus或Artifactory可以存储简单的tar.gz工件吗?,deployment,nexus,artifactory,artifacts,Deployment,Nexus,Artifactory,Artifacts,我的云服务器位于世界各地不同的数据中心。每个数据中心都是独立的 我正在寻找一种简单的方法,将工件轻松、一致地部署到每个区域的各个服务器集群(可能运行不同版本的软件,例如开发、测试和生产集群)。在我看来,我需要一个工件服务器,因为我可以在云服务器上执行一个安装脚本,这会拉下正确的软件工件 现在,我在运营部工作。我不关心构建,也不关心管理软件构建依赖关系。我只是想要一个工件服务器,在那里我可以存储我的包的所有不同版本,以便以后访问。更重要的是,我要存储几种不同类型的工件 Shell脚本 Pytho

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

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

现在,我在运营部工作。我不关心构建,也不关心管理软件构建依赖关系。我只是想要一个工件服务器,在那里我可以存储我的包的所有不同版本,以便以后访问。更重要的是,我要存储几种不同类型的工件

  • Shell脚本
  • Python脚本
  • 傀儡舱单
  • Debian文件(通常作为多个Debian的tar.gz文件提供)

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

是的,你可以上传非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和其他文件)的格式是否正确来处理它们。但这可能会导致意外或不必要的行为

这是最好的方式去。。。只有您可以根据您的用例说。工件改变的频率、网络延迟等因素可以决定策略的成败

参考文献:


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

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

尽管这两种工具都是从解决世界上的一个问题开始的,但智能二进制管理的需求已经在许多其他领域得到了认可

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


另请参见管理者相对于其他临时解决方案的一些好处。

如果您想使用curl,请尝试以下方法:

您可以(参见其他答案)。例如,您也可以这样引用它们(不过最好举个例子):

您可以像此插件一样引用/使用它们:

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

org.apache.maven.plugins
maven依赖插件
复制
包裹
复制
org.apache
activemq发行版
5.7.0
广州
真的
${project.build.directory}

Nexus 3的解决方案

首先在Nexus中创建原始存储库:

然后您可以在maven中使用它,或者通过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
更多信息