Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File 如何将工件上传到工件库/在工件没有扩展的构建系统(GradleMaven Ant)中使用它_File_Upload_Gradle_Artifactory_Artifact - Fatal编程技术网

File 如何将工件上传到工件库/在工件没有扩展的构建系统(GradleMaven Ant)中使用它

File 如何将工件上传到工件库/在工件没有扩展的构建系统(GradleMaven Ant)中使用它,file,upload,gradle,artifactory,artifact,File,Upload,Gradle,Artifactory,Artifact,我有以下文件,我想作为9.8.0版本的工件上传到Artifactory 注意:前两个文件没有扩展名(它们是可执行文件,即,如果在上面打开它们/cat,就会看到垃圾字符) CVS中给定版本9.8.0的文件夹/文件如下所示: com.company.project/gigaproject/v9.8.0/linux/gigainstall com.company.project/gigaproject/v9.8.0/solaris/gigainstall com.company.project/gig

我有以下文件,我想作为9.8.0版本的工件上传到Artifactory

注意:前两个文件没有扩展名(它们是可执行文件,即,如果在上面打开它们/cat,就会看到垃圾字符)

CVS中给定版本9.8.0的文件夹/文件如下所示:

com.company.project/gigaproject/v9.8.0/linux/gigainstall com.company.project/gigaproject/v9.8.0/solaris/gigainstall com.company.project/gigaproject/v9.8.0/win32/gigainstall.exe com.company.project/gigaproject/v9.8.0/gigafile.dtd com.company.project/gigaproject/v9.8.0/gigaanotherfile.dtd com.company.project/gigaproject/v9.8.0/giga.jar com.company.project/gigaproject/v9.8.0/giga.war 答案1(将以不同的方式介绍2):使用“部署”选项卡下的Artifactory“Artifact Bundle”功能部分,可以通过首先创建zip文件(其中包含结构和工件)至少以我们想要的方式上传工件--或者您可以使用/调用artifactoryrestapi的方式上传工件

高层次理念:

创建一个名为gigaproject.zip或anyname.zip/.tar/压缩文件的zip文件,Artifactory可以读取该文件。在zip内部,创建结构-这些工件将如何加载到Artifactory

gigaproject.zip将包含以下文件夹/结构/文件

案例1:

com/company/project/gigaproject/9.8.0/linux/gigainstall com/company/project/gigaproject/9.8.0/solaris/gigainstall com/company/project/gigaproject/9.8.0/win32/gigainstall.exe com/company/project/gigaproject/9.8.0/gigafile.dtd com/company/project/gigaproject/9.8.0/gigaanotherfile.dtd com/company/project/gigaproject/9.8.0/giga.jar com/company/project/gigaproject/9.8.0/giga.war 结论:可以在任何结构中上载任何文件(在Artifactory中有/没有扩展名),但这取决于构建系统将如何使用它或是否能够使用它。 -我从Artifactory存储库中删除了刚才用case1.zip文件创建的结构,以尝试下一个case#2,并删除了我创建的.zip文件

案例2:

com/company/project/gigaproject/9.8.0/linux/gigainstall com/company/project/gigaproject/9.8.0/solaris/gigainstall com/company/project/gigaproject/9.8.0/win32/gigainstall.exe com/company/project/gigaproject/9.8.0/gigafile.dtd com/company/project/gigaproject/9.8.0/gigaanotherfile.dtd com/company/project/gigaproject/9.8.0/giga.jar com/company/project/gigaproject/9.8.0/giga.war 让我们为每个工件创建一个单独的版本化文件名,并以以下格式创建结构-Artifactory如何实际存储它们(在树视图中的存储库中看到的工件),并创建一个包含该结构的.zip文件。让我们使用相同的“Artifact Bundle”功能来上载这个.zip文件,以上载我们在Artifactory中需要的各个工件-其中工件id(我们在尝试使用它时提到的第二个值)将与Artifactory中的工件文件名相匹配

.zip文件的文件夹/文件结构:

com/company/project/gigainstall/9.8.0/gigainstall-9.8.0.linux com/company/project/gigainstall/9.8.0/gigainstall-9.8.0.solaris com/company/project/gigainstall/9.8.0/gigainstall-9.8.0.exe com/company/project/gigafile/9.8.0/gigafile-9.8.0.dtd com/company/project/gigaanotherfile/9.8.0/gigaanotherfile-9.8.0.dtd com/company/project/giga/9.8.0/giga-9.8.0.jar com/company/project/giga/9.8.0/giga-9.8.0.war

<强>案例3 :让我们采取一个简单的方法(解决问题,但会节省很多痛苦)。 使用以下结构创建gigaproject.zip文件,这种方法在文件夹/文件结构中的单个工件/文件名中嵌入-No x.x.x版本值。我们将使用“单工件”方法(它将在Artifactory提供的上载/部署过程中自动创建.pom for gigaproject.zip文件)。使用这种方法,您仍然可以获得gigainstall文件,而不需要对其名称进行任何扩展。正如您已经看到的,在上载/部署步骤中,您上载gigaproject.zip,artifactory将其作为“gigaproject-x.x.x.zip”上载到给定的目标存储库,在我们的例子中,x.x.x是9.8.0。请参见下面的图像快照

gigaproject/linux/gigainstall gigaproject/solaris/gigainstall gigaproject/win32/gigainstall.exe gigaproject/gigafile.dtd gigaproject/gigaanotherfile.dtd gigaproject/gigaproject.zip gigaproject/giga.jar gigaproject/giga.war 一旦.zip可供Gradle构建系统使用,现在您可以告诉Gradle在构建/工作区的某个地方解压这个.zip文件,在那里您可以将实际(解压)文件(gigainstall、.dtd、.jar、.war等)提供给构建过程/步骤

PS:我想案例1和案例2应该对Ant有效



答案2: 如果您以任何一种方式上载了非扩展文件。确保您已经手动创建/上传了它的POM文件(例如,如果我在com/company/project/gigainstall/9.8.0/gigainstall-9.8.0下将gigainstall-9.8.0作为工件上传,那么在同一级别上,我必须/应该创建它的POM文件(请参阅一个简单的template.POM文件以了解自定义jar工件,或者在通过“单一工件”部署,您将看到POM编辑器窗口向您显示的内容)并将两者上载,这样Gradle就不会错误地说没有POM冲突/错误。Ant可能不需要POM(我没有检查)

一旦它出现在Artifactory中,下面的行应该可以工作——或者如果您找到其他方法,请发表评论

dependencies {
   // See nothing mentioned after - x.x.x@
   compile "com.company.package:gigainstall:9.8.0@"
}
dependencies { compile "com.company.project:gigainstall:9.8.0@linux" compile "com.company.project:gigainstall:9.8.0@solaris" compile "com.company.project:gigainstall:9.8.0@linux" compile "com.company.project:giga:9.8.0 compile "com.company.project:giga:9.8.0@war compile "com.company.project:gigafile:9.8.0@dtd compile "com.company.project:gigaanotherfile:9.8.0@dtd }
Could not resolve all dependencies for configuration ':compile'.
> Could not resolve com.company.project:gigafile:0.0.0.
  Required by:
      com.company.project:ABCProjectWhichConsumesGIGAProjectArtifacts:1.64.0
   > Could not GET 'http://artifactoryserver:8081/artifactory/ext-snapshot-local/com/company/project/gigafile/0.0.0/gigafile-0.0.0.pom'. Received status code 409 from server: Conflict
gigaproject/linux/gigainstall gigaproject/solaris/gigainstall gigaproject/win32/gigainstall.exe gigaproject/gigafile.dtd gigaproject/gigaanotherfile.dtd gigaproject/gigaproject.zip gigaproject/giga.jar gigaproject/giga.war
dependencies {
   // This is the only line we need now.
   compile "com.company.project:gigaproject:9.8.0@zip"
}
dependencies {
   // See nothing mentioned after - x.x.x@
   compile "com.company.package:gigainstall:9.8.0@"
}