所有
我有一个简单的开箱即用的Grails项目,没有任何自定义。我有一个简单的页面,简单的控制器,简单的服务;没问题。
问题: 我想通过其API与我们自己的软件平台进行交互。为此我需要引用我们的内部jar工件。我们有自己的Ivy存储库,用于管理内部/外部依赖关系。我无法将BuildConfig.groovy配置为指向内部存储库。以下是我根据these instructions
尝试的内容/*
* Configure our resolver.
*/
def libResolver = new org.apache.ivy.plugins.resolver.URLResolver()
['libraries', 'builds'].each {
libResolver.addArtifactPattern(
"http://my.repository/${it}/" +
"[organisation]/[module]/[revision]/[type]s/[artifact].[ext]")
libResolver.addIvyPattern(
"http://my.repository/${it}/" +
"[organisation]/[module]/[revision]/[type]s/[artifact].[ext]")
}
libResolver.name = "my-repository"
libResolver.settings = ivySettings
resolver libResolver
这无法指向违规行
resolver libResolver
研究我发现了一些关于此的文章,删除了违规行,得到了更多错误。删除了更多违规行,没有错误,但在“依赖项”部分中指定我的依赖项根本没有解决它们。
问题:
是否有人成功设法使用内部常春藤仓库配置grails项目以进行依赖关系管理?
答案 0 :(得分:1)
在这里。
grails.project.dependency.resolution = {
...
repositories {
inherits true // Whether to inherit repository definitions from plugins
resolver XXXLibResolver(dependencyManager)
grailsPlugins()
...
}
....
def DependencyResolver XXXLibResolver(IvyDependencyManager dependencyManager) {
DefaultRepositoryCacheManager nocache = new DefaultRepositoryCacheManager();
nocache.setUseOrigin(true);
nocache.name = "nocache";
dependencyManager.ivySettings.addRepositoryCacheManager(nocache);
def XXXHome = System.getenv("XXX_HOME")
if (XXXHome) {
XXXHome = new File(XXXHome).absolutePath
def fileSystemResolver = new FileSystemResolver()
fileSystemResolver.cache = nocache.name
fileSystemResolver.local = true
fileSystemResolver.name = 'XXX-lib-repo'
fileSystemResolver.addIvyPattern("${XXXHome}/libraries/[organisation]/[module]/ivys/ivy-[revision].xml")
fileSystemResolver.addArtifactPattern("${XXXHome}/libraries/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]")
fileSystemResolver.settings = dependencyManager.ivySettings
return fileSystemResolver
}
}