我当前运行mvn install命令时遇到问题,工件安装在我的本地存储库中(即在%HOME/.m2文件夹中)但不在Nexus存储库中.
我知道Nexus我可以使用GUI手动添加工件但是有没有办法在mvn命令中安装工件?
我有一个简单的Maven项目设置,可以部署到本地Nexus服务器.所有相关的配置元素都已就位(<distributionManagement>
带有URL的部分,<server>
带有用户名和密码的settings.xml文件中的元素等).我知道设置是正确的,因为在Maven 3.0上,我可以部署.在Maven 3.0.4上,我有两个问题.
如果我尝试使用3.0.4开箱即用,我会得到一个handshake_failure
.据我所知,这是因为3.0.4 交换后备HTTP客户端.我已将服务器CA的证书包含javax.net.ssl.trustStore
在我的MAVEN_OPTS
环境变量中指向的信任库中javax.net.ssl.keyStore
,并在指定的密钥库中包含客户端证书.同样,这适用于3.0.出于某种原因,它不被新的HTTP客户端接收.
因此,我尝试将wagon-http-lightweight
JAR放入lib/ext/
3.0.4 的目录中,这使我lightweight
遇到了第二个问题:一旦我强制使用客户端,我就停止获取handshake_failure
并开始获取HTTP 401.再次,用户名和密码在Maven下工作3.0.它显然是在拿起用户名,因为运行时-X
包括"
我已经打了好几个小时了,我已经走到了尽头.我欢迎一个解决方案,但我也欢迎任何有关我下一步行动的建议.
我正在尝试使用curl通过bash将目录的内容上传到nexus,并且在我正在使用的命令中遇到一些问题
简而言之,我想在特定目录上执行find命令,并使用-exec {}动作对nexus进行curl
但是我的find命令返回包含源目录的文件路径,我想更改它,所以我只显示内容而不是完整路径
例如,假设我有一个名为trunk的目录,其中包含这些文件和子目录
trunk/directory1/file1
trunk/directory2/file1
trunk/directory2/file2
Run Code Online (Sandbox Code Playgroud)
我希望我的find命令返回
directory1/file1
directory2/file1
directory2/file2
Run Code Online (Sandbox Code Playgroud)
然后这可以传递给我的exec命令
我当前的find命令是: -
find trunk -type f -exec curl --user user:pass --ftp-create-dirs -T {} https://PATH_TO_NEXUS/{} \;
Run Code Online (Sandbox Code Playgroud)
除了在nexus中创建的文件外,这个工作正常
https://PATH_TO_NEXUS/trunk/directory1/file1
Run Code Online (Sandbox Code Playgroud)
而我想要的是
https://PATH_TO_NEXUS/directory1/file1
Run Code Online (Sandbox Code Playgroud)
有人有任何想法吗?
如何使用java将工件部署到Nexus存储库.有没有这方面的API.
我在本地机器上配置了nexus.我需要使用java在其中部署工件.是否有任何文档或链接.
Ivy如何阅读作为Maven镜像的Nexus回购?
我正在考虑使用Gradle作为我的构建系统,而Gradle是使用Ant + Ivy(使用Groovy)构建的.我的本地网络上有一个Nexus存储库,可以充当"镜像".为了让我构建我的项目,我在.m2\settings.xml配置文件中添加了一个"镜像"条目.我能够很好地构建我的Maven项目,但是Gradle没有读取.m2配置,所以我的Gradle项目不会构建.
我不知道如何配置Gradle将nexus repo用作镜像.任何人都可以解释这个或给我一些提示吗?我怀疑它与使用ivysettings.xml文件有什么关系? 这篇文章暗示Gradle DOES实际上是在阅读Maven配置,但我没有遇到过这种情况.
SVN和Nexus在开发和集成期间被广泛用作源代码的存储库.也就是说,当我们可以通过SVN设置我们的存储库时,为什么我们真的需要使用Nexus?即使是SVN也有适当的版本控制架构,并广受好评.
通过谷歌浏览,但似乎没有提供明显的差异.请澄清我.
我开始使用Jenkins,SCM,Nexus和Android-Gradle进行持续改进.我在Gradle中有一个任务是将AAR文件上传到我的Nexus存储库,如果我从我的计算机执行它,它就可以找到它.任务是' install ',gradle-code如下:
// upload to our nexus repository
uploadArchives {
repositories {
// the maven plugin features this deployer
mavenDeployer {
// we deploy to the release repository in this case
repository(url: "https://nexus1.xxxxx.com/nexus/content/repositories/releases") {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
// pom project information
pom.project {
version android.defaultConfig.versionName
artifactId 't21-android-commons-utils'
name 'T21 Android Commons Utils Lib'
packaging 'aar'
}
}
}
}
task install(dependsOn: uploadArchives)
Run Code Online (Sandbox Code Playgroud)
身份验证函数调用getRepositoryUsername()和getRepositoryPassword()以从gradle.properties读取凭据.但我不想在我们的SCM中公开这个文件,它应该不安全.
当我将代码推送到我们的SCM时,Jenkins注意到它并执行一项工作来完成一些gradle-task,包括' install '.它工作正常但" 安装 "无法向Nexus服务器进行身份验证,因为找不到gradle.properties(正如预期的那样).
所以,我想知道我应该怎么做"认证 …
虽然我能够成功地将新拉出的docker镜像推送到Nexus 3 docker托管的repo,但最后会抛出类似"无效校验和摘要格式"的错误.我从dockerhub中取出"jenkins:latest",然后对其进行标记,然后将其推送到nexus docker托管仓库.
f3e4e0468545: Pushed
656120ad8c56: Pushed
30f9a83f20f3: Pushed
78dbfa5b7cbc: Pushed
invalid checksum digest format
Run Code Online (Sandbox Code Playgroud)
我知道Nexus 3还不是LTS,但是要确保它不是我的环境设置.我在18443有一个不安全的码头登记处
docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 53
Server Version: 1.10.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 89
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 3.16.0-53-generic
Operating System: Ubuntu 14.04.3 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.86 GiB …
我想在Nexus OSS 3实例上将一些文件上传到新生成的托管Maven存储库.
我需要使用curl(不是maven或其他东西)进行上传.
我尝试了以下语句(端口不是必需的 - 我有一个NginX作为反向代理)
curl -v -F r=releases -F hasPom=false -F e=jar -F g=com.my.group -F a=myArtifact -F v=1.0.0-RC1 -F p=jar --upload-file "myArtifact.jar" -u user:password123 http://myNexusInstance.com/repository/myRepository
Run Code Online (Sandbox Code Playgroud)
此命令生成以下错误:
* Server auth using Basic with user 'user'
PUT /repository/myRepository HTTP/1.1
Host: myNexusInstance.com
Authorization: Basic xxxx=
User-Agent: curl/7.49.1
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
HTTP/1.1 100 Continue
} [16380 bytes data]
HTTP/1.1 400 Invalid path for a Maven 2 repository
Run Code Online (Sandbox Code Playgroud)
我尝试使用谷歌搜索但没有找到任何解决方案(在Nexus OSS 3.x文档和其他论坛中都没有)
Nexus存储库使用以下配置值进行设置:
错误报告或请求帮助:我正在尝试在我的组织中实施私有docker注册表,并且需要在我的注册表中进行多租户.A组可以访问其容器,但不能访问B组.
文档暗示我可以通过内容选择器执行此操作可以用于授予对查询结果的访问权限,有点像视图.我已经取得了一些成功,但已经遇到了类似bug的问题.
:5000
.path =~ ".*spark.*"
查询的预览输出预期结果.现在我试试docker login
.我得到了一个403 Forbidden.
如果我授予测试用户nx-repository-view-docker-*-read
角色,测试用户可以docker login
访问注册表并查看所有容器.(可能是故意的)内容选择器不限制访问.
但是,如果我nx-repository-view-docker-*-read
在成功后删除角色docker login
并保留内容选择器角色,则内容视图将按预期工作.
这不是一个可行的解决方案,但在可能缺少/窃听的方面非常有趣.
有任何想法吗?我只是做错了吗?我发现一篇帖子表明官方的答案是在不同的端口上创建多个注册表并以这种方式允许它们.可行但不理想.