已经有一些类似的问题,但大多数要么专注于Nexus vs. Artifactory,要么是几年之久.
我想了解这两天的两个项目的立场.我的印象是,Nexus是最受尊敬的存储库管理器,但我确实倾向于(稍微)更喜欢纯粹的自由项目(嘿,一点意识形态从不伤害任何人).
我的用例非常简单:我只想要一个按需依赖缓存,我们有六个自己的工件.我将与Ivy(不是Maven)一起使用它,我们不做自动构建,只有几个开发人员使用它.所以我也想知道Nexus的更高级功能是否是我不需要的东西.
在做出选择之前我应该注意什么?
对于MAVEN,Archiva与Artifactory存储库有什么区别?
有人对比图吗?
哪一个更好于这两个,因为我正在寻找免费存储库而不是寻找许可证版本,所以我知道NEXUS是最好的,但不要在此考虑作为讨论点.
我正在尝试为我们的团队建立一个私人远程存储库.现在存储库提供以下服务,到目前为止我已经尝试过 -
当发出' mvn compile '时,它会搜索"〜/ .m2"中的依赖项.如果在那里找不到它,那么它将进入远程私有存储库,当依赖关系仍然不存在时,它将进入中央存储库.
在编译之前,我必须将所有依赖项与校验和和元数据一起放在我们的私有(和远程)存储库中.
当我们需要一个工件(例如 - spring-mvc)时,我们需要将它与该工件的所有依赖项(spring-mvc)一起放在远程私有存储库中.在这种情况下,从我们的远程私有存储库下载"spring-mvc".但是,"spring-mvc"的依赖关系不会从我们的远程私有存储库下载.它们从中央存储库下载.
现在我要做的是 -
以这样一种方式配置专用远程存储库"R",即我不必手动将所有依赖项放入其中.当首先发出"mvn编译"时; 在"〜/ .m2"中搜索依赖项,如果没有找到,则它将转到私有远程存储库"R".如果在'R'中找到依赖关系,那么"〜/ .m2"将从'R'获得它.如果在'R'中找不到依赖关系,则从中央存储库下载这些依赖关系,并将依赖关系保存在'R'中以供进一步使用.之后'〜/ .m2'将从'R'获得它们.在这里,我不需要手动将依赖项放在我们的远程私有存储库"R"中.
'〜/ .m2'将从远程私有存储库'R'获取"spring-mvc"(这是我项目的pom.xml中提到的主要依赖项)的所有依赖项,并且'R'将从相应的中央存储库获取它们.
任何人都可以建议某种方式/或教程参考以满足上述两个目标吗?提前致谢.
编辑:我尝试过Nathaniel Waisbrot的回答和nexus-2.7.0-06-bundle.经过几个小时的努力,我可以在使用jre-7时进行设置.使用jre-6,无法启动nexus.但我们的项目是使用JDK-6部署的.我们不想更改当前jre
版本.用jre-6 apache-archiva
就行了.但我不确定我是否能够实现上一节中的所有目标.是否有任何archiva
用户/专家可以告诉我是否可以在上一节中实现这些目标?
我的团队是Maven的新手,我们无法找到关于为我们的项目选择artifactID的任何明确指导.
我知道命名约定指南说应该是artifactIDs
"无论你想要什么名字都用小写字母和没有奇怪的符号"
但是我的组中的一些人想要对groupID 和 artifactID 使用反向域名样式.
基于上述指南以及我在中央存储库中看到的所有示例,我不认为有反向域样式artifactID是有意义的,但我不知道这样做是否实际上是无效的或仅仅是不满意.我依稀记得读过一些关于各种存储库管理器无法有效处理包含句点(.)字符的artifactID的内容,但我不记得我在哪里阅读它并且我现在找不到它.
对Maven artifactID中允许的字符有什么规则(如果有的话)?
我们正在尝试将Archiva用作中央和其他外部存储库的Maven代理,并将其作为我们的工件的快照存储,这些工件由Hudson从SVN自动构建并安装到快照存储库.
我无法将我的Maven客户端设置为一起使用内部和快照存储库.我的项目有一些外部依赖项(如log4j
),可以正确地从Archiva内部存储库下载.此外,我的项目依赖于一个自己的项目,该项目的工件已经构建并安装到快照存储库中.但是,如果我尝试构建项目,Maven无法找到我的快照工件.
我的配置文件原来是这个设置:
<mirror>
<id>company-internal</id>
<name>Company's Archiva - Internal Repository</name>
<url>http://www.mycompany.hu/archiva/repository/internal</url>
<mirrorOf>*</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)
然后我添加了以下内容:
<mirror>
<id>company-snapshots</id>
<name>Company Archiva - Snapshots Repository</name>
<url>http://www.mycompany.hu/archiva/repository/snapshots</url>
<mirrorOf>apache.snapshots</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)
但是,Maven不会尝试在构建时查找snaphot存储库.我做错了什么?顺便说一下,我并没有真正得到<mirrorOf>
元素的目的.我试图在内部镜像设置中替换它,central
但这仍然无法解决我的问题.
我检查了Apache Archiva Redback,当我这样做时编译失败,mvn install
因为Apache RAT失败了,我还没有改变任何东西.
我正在开发一个使用Maven作为构建工具的项目.我正在使用该工具的2.2.1版本.最近一位同事提到由于校验和错误,他无法建立项目.我没有收到这些错误所以我删除了我的本地存储库.果然,我在下一次构建尝试时也遇到了校验和错误.我们使用Archiva作为我们的中央存储库,所以我再次上传了jar,希望能够解决这个问题.没运气.可能导致这些错误的原因是什么?如何解决?
Downloading: http://artifactory/archiva/repository/maven-repo/org/springframework/ws/spring-
ws/1.5.8/spring-ws-1.5.8.pom
427b downloaded (spring-ws-1.5.8.pom)
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '14d6901e3f251f5d312b9be726c75a
68f78045ac'; remote = '659bbed2c2dae12e9dbb65f8cad8fce1a1ea0845' - RETRYING
Downloading: http://artifactory/archiva/repository/maven-repo/org/springframework/ws/spring-
ws/1.5.8/spring-ws-1.5.8.pom
427b downloaded (spring-ws-1.5.8.pom)
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '14d6901e3f251f5d312b9be726c75a
68f78045ac'; remote = '659bbed2c2dae12e9dbb65f8cad8fce1a1ea0845' - IGNORING
Downloading: http://artifactory/archiva/repository/maven-repo/com/xyz/abc/3.0.20090929_
attachment_fixes/abc-3.0.20090929_attachment_fixes.pom
435b downloaded (abc-3.0.20090929_attachment_fixes.pom)
Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到有关Maven存储库的Maven索引中包含的内容的更多详细信息?哪里可以找到有关这一切如何运作的更多细节?我对maven-indexer有点熟悉,但我仍有一些灰色斑点......
解压缩和压缩索引有什么区别?
Maven代理存储库是否只具有远程索引,还是它还保留了当前在本地缓存的工件的索引?
我正在研究这个主题,并且遗憾的是,很少有关于它的文档.
我试图将生成的我的android库的aar文件发布到我的Apache Archiva Maven服务器,但我还没设法让它工作,因为这些示例都已过时或者它们是针对java而不是针对android
在注意到gradle示例的大多数方法都已弃用之后,我发现了这个新文档:
其中介绍了如何使用新的API,似乎将uploadArchives替换为发布等等....
所以这就是我到目前为止所得到的:
apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'maven-publish'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mycompany.mylibrary"
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
} …
Run Code Online (Sandbox Code Playgroud) 在研究CI工具时,我发现CI的许多安装也集成到SonaType Nexus和JFrog Artifactory等工件库中.
这些工具听起来与Maven高度集成.我们不使用Maven,也不编译Java.我们使用Qt/qmake/make编译C++,这个版本对我们来说非常有用.我们仍在调查CI工具.
使用Artifact存储库有什么意义?
归档到Nexus或Artifactory(或Archiva)应该是我们的制造链中的一个步骤,还是CI链的一部分,还是它可能是?
我如何使我们的"make"构建或perl/bash/batch脚本与它们交互?