我有一个使用来自maven的插件和依赖项的grails 2.5.3应用程序。现在,我想在公司内部使用Nexus服务器设置作为我的应用程序使用的所有依赖项的代理。但是,我之前从未使用过Nexus,所以我对事情的运作方式感到有些困惑。
我使用POM.xml
为我的Grails应用生成grails create-pom com.mycompany
。生成的pom具有以下artifactId
<groupId>com.mycompany</groupId>
<artifactId>myproj</artifactId>
<packaging>grails-app</packaging>
<version>1.0.0.R1</version>
然后我将以下内容添加到POM.xml
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Repo</name>
<url>https://companynextus/content/repositories/myproj</url>
</repository>
</distributionManagement>
然后我运行mvn deploy
现在我可以在https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1/
看到我的整个WAR文件和POM此时我只需更改BuildConfig.groovy:
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
mavenLocal()
grailsCentral()
mavenCentral()
}
要:
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
grailsRepo "https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1"
mavenRepo "https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1"
}
但我在执行grails prod war
解决错误获取依赖项:无法找到工件org.grails.plugins:tomcat:zip:8.0.33 in https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1(https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1) (使用--stacktrace查看完整的跟踪)
答案 0 :(得分:1)
我们创建了一个nexus存储库组(http://nexushost/content/groups/repo),它缓存所有外部maven存储库(maven central,grails repos)和我们的内部版本repo。
至于部署,我们有一个快照回购(http://nexushost/content/repositories/snapshots)和一个回收版本(http://nexushost/content/repositories/releases/)。
这是我们的BuildConfig与grails 2.5.1的摘录。它与你的版本应该没有什么不同:
def env = System.getenv() + new HashMap(System.properties)
grails {
project {
repos {
SNAPSHOTS {
url = "http://nexushost/content/repositories/snapshots"
username = env.NEXUS_DEPLOY
password = env.NEXUS_DEPLOY_PASS
}
RELEASES {
url = "http://nexushost/content/repositories/releases/"
username = env.NEXUS_DEPLOY
password = env.NEXUS_DEPLOY_PASS
}
}
}
}
grails.project.dependency.resolver = "maven"
grails.project.dependency.resolution = {
inherits("global") {
}
repositories {
inherits true
mavenLocal()
mavenRepo('http://nexushost/content/groups/repo') {
auth(
username: env.NEXUS_BUILD,
password: env.NEXUS_BUILD_PASS
)
}
mavenRepo('http://nexushost/content/repositories/snapshots') {
auth(
username: env.NEXUS_BUILD,
password: env.NEXUS_BUILD_PASS
)
updatePolicy 'always'
}
}
//....
}
答案 1 :(得分:0)
当您执行mvn deploy
命令时,它会将您的项目作为jar上传到nexus存储库,但不会单独上传每个依赖项,如果您要下载并使用nexus中的项目依赖项,则需要将依赖项上传到也是关系。
有关如何将第三方jar上传到像nexus这样的存储库的更多信息 https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html
如果您使用nexus 2,也可以从ui。
执行此操作