2

全部,

我有一个直接开箱即用的 Grails 项目,没有任何自定义。我有一个简单的页面、简单的控制器、简单的服务;没问题。

问题:我想通过它的 API 与我们自己的软件平台进行交互。为此,我需要参考我们的内部 jar 工件。我们有自己的 Ivy 存储库,用于管理内部/外部依赖项。我无法将 BuildConfig.groovy 配置为指向内部存储库。这是我根据这些说明尝试过的

/*
 * 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

研究我发现只有几篇关于这个的文章,删除了有问题的行,得到了更多的错误。删除了更多违规行,没有错误,但在“依赖项”部分中指定我的依赖项根本没有解决它们。

问题:

有没有人成功地使用他们的内部 ivy 存储库配置一个 grails 项目以进行依赖管理?

4

1 回答 1

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
        }
}
于 2012-12-07T22:54:09.653 回答