我尝试将其添加到settings.xml;
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
Run Code Online (Sandbox Code Playgroud)
但那没用.mvn deploy -Dmaven.skip.deploy = true似乎工作正常.另外我假设将上述标记添加到pom.xml也可以.有没有办法使用settings.xml实现这一目标?
我想要这样做的原因是强制生成Jenkins作业的人必须使用Jenkins的方法来部署工件而不使用部署目标.只有在整个构建成功时,Jenkins的方法才会部署工件,但即使构建的其余部分即将失败,部署目标也可以部署工件.除了阻止普通用户在Jenkins中创建和配置作业之外,我愿意接受有关实现此目的的其他方法的建议.
在一个可以每天创建多个构建(发布候选包)但每月只有一个被提升为生产的环境中,我认为将每个构建存储在Git中都会浪费,但应该有一个短期位置,最后几个构建版本发布.
我目前正在将这些发布到共享目录.我看到IVY过去常用于这种二进制发布.Git看起来有点矫枉过正,因为它的模型永远不会删除任何内容.
管理/发布这些瞬态构建工件是否有一种商定的标准化方法?
在研究CI工具时,我发现CI的许多安装也集成到SonaType Nexus和JFrog Artifactory等工件库中.
这些工具听起来与Maven高度集成.我们不使用Maven,也不编译Java.我们使用Qt/qmake/make编译C++,这个版本对我们来说非常有用.我们仍在调查CI工具.
使用Artifact存储库有什么意义?
归档到Nexus或Artifactory(或Archiva)应该是我们的制造链中的一个步骤,还是CI链的一部分,还是它可能是?
我如何使我们的"make"构建或perl/bash/batch脚本与它们交互?
我开发了一个带有spring和vaadin的java web应用程序应用程序,在这个应用程序中,我使用了一些插件,如easyuploads和wizards-for-vaadin.然后我在我的pom.xml中添加了以下配置.
<dependency>
<groupId>org.vaadin.addon</groupId>
<artifactId>easyuploads</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>org.vaadin.addons</groupId>
<artifactId>wizards-for-vaadin</artifactId>
<version>1.1.0</version>
</dependency>
<!-- Add-On Repository -->
<repositories>
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
现在我正在安装artifactory(第一次)像存储库管理工具,我想为vaadin-addons添加一个远程存储库.但这不起作用:
我该如何解决?这是正确的方法吗?
我在 Artifactory 服务器上存储了一些资源以及一些文档。但是,当我访问 时/path/to/release/
,它会呈现目录索引而不是我的index.html
. 是否有一个设置可以用来渲染网页而不是文件列表?
我在 Maven 3.2.1 中使用 JFrog artifactory 3.2.1.1。
我上传了一个已构建的项目,该项目存在于存储库浏览器下的 libs-snapshot-local 中。如果我浏览到 com.foo.project,我将在 artifactory 浏览器中看到 project-1.0-20151113.133436-1.jar 文件和 pom 和元数据。
甚至访问http://example.com:8081/artifactory/webapp/browserepo.html?42&pathId=libs-snapshot-local:com/foo/project/1.0-SNAPSHOT/project-1.0-20151113.133436-1.jar向我展示了里面的jar文件。
我使用了 artifactory 中的 settings.xml 生成器来生成<repository>
我在以下 pom.xml 中使用的标签:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo.bar</groupId>
<artifactId>exampleApp</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>exampleApp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://example.foo:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.foo</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<type>jar</type>
<includes>myFolder</includes>
<outputDirectory>${project.build.directory}/newFolder/js/gmoketest</outputDirectory>
</artifactItem> …
Run Code Online (Sandbox Code Playgroud) 我想建立一个sbt项目,以便它可以基于(git)分支发布到适当的神器库.
针对此问题提出的解决方案建议在build.sbt文件中对存储库进行硬编码.
但是,我希望master分支发布到"releases",并使用相同的build.sbt文件发布到"snapshots"的另一个分支.
理想情况下,我想要以下内容:
val gitBranch = taskKey[String]("Determines current git branch")
gitBranch := Process("git rev-parse --abbrev-ref HEAD").lines.head
publishTo := {
val myArtifactory = "http://some.where/"
if (gitBranch.value == "master")
Some("releases" at myArtifactory + "releases")
else
Some("snapshots" at myArtifactory + "snapshots")
}
Run Code Online (Sandbox Code Playgroud)
但这会产生"错误:设置不能依赖于任务".
我正在使用jfrog rt config
配置JFrog CLI.它要求我的"Artifactory服务器ID".我无法在JFrog文档或我的Artifactory实例中找到有关此内容的任何信息.如何找到此服务器ID?
我们公司有一些Web应用程序,这些应用程序依赖于一长串内部创建和托管的npm包(我们使用JFrog Artifactory),每个包都有自己的依赖项(等等).每当修复错误或在低级别包中实现功能时,当前进程需要开发人员检查他们的更改,等待CICD构建完成并测试运行,更新父包,并冲洗/重复所有链的方式(这可能是一个非常漫长的过程).
这可能不是一个独特的情况,但它会极大地影响我们的生产力,并鼓励单片程序包开发限制更新程序包的数量,而不是正确的代码分离.
我只能想到两个解决方案:
1)更新Web应用程序以直接在package.json中使用传递依赖项.然而,这打破了"封装",因为Web应用程序不应该知道直接依赖关系如何管理其作业.如果直接依赖性稍后使用某些其他传递依赖性,则不应该将Web应用程序引用到现在不相关的包.
2)修改Web应用程序的package-lock.json以指向新版本的传递依赖项.然而,这似乎只是临时工作,因为合并冲突或直接依赖的新安装往往会恢复这些更改.
我意识到答案可能是优化构建/发布过程,减少痛苦和手动,但我希望其他人可能遇到了不同的解决方案.
仅供参考 - 默认情况下,所有依赖项都以"〜"作为版本前缀安装.
我们使用 artifactory 来拉库和存储工件。我们将 npm 注册表设置为这个 artifactory url 以下拉库。我们使用 gitlab 作为我们的 CI。我写了一份使用 ng build --prod 构建 angular 应用程序的工作。我的问题是将 dist/ 文件夹推送到 artifactory 的最佳实践是什么?在下一步中,我将检索 dist/ 文件夹并使用 cf push 将其部署到 cloud Foundry。我查看了 npm install,但它说它需要一个 package.json。我在 dist 文件夹中创建一个吗?如果是这样,我在那里放什么?另一种选择似乎是对 dist/ 进行 tar,但这似乎也需要 package.json。任何想法都非常感谢。
我尝试使用 artifactory 的 REST API 推送文件夹并使用 --data-binary 卷曲,但这仅支持单个文件(如预期)
curl -u $ARTIFACTORY_USER:$ARTIFACTORY_APIKEY --data-binary @$RELEASE_PACKAGE -X PUT $ARTIFACTORY_URL/artifactory/
我希望能够推送整个 dist 文件夹,以便我可以检索和部署它。但是,我不知道最佳实践是什么(如果推送文件夹是正确的,还是应该推送 tar.gz)