如何将Artifactory WAR添加为Gradle依赖项

时间:2016-09-29 15:49:35

标签: java spring gradle artifactory

我正在开发一个Spring MVC项目(使用Gradle)来生成一个模板,以便集成到不同的项目中。模板项目包含很少的HTML文件和一些用于处理属性的类。我已经配置了artifactory-gradle-plugin来生成和发布包含我的HTML文件和类的WAR。一切正常,我的WAR和POM文件现在可以在我的Artifactory服务器下使用。这是我的build.gradle文件的一部分

war {
    rootSpec.exclude('**/*.properties')
    [...]
    rootSpec.exclude('**/test/**')
    rootSpec.exclude('**/*.jar')
}

artifactory {
    publish {
        contextUrl = "myurl"  
        repository {
            repoKey = 'myrepo'
            username = "myuser"
            password = "mypasswd"
            maven = true
        }
        defaults {
            publications ('mavenJava')
        }
    }
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.web
        }
    }
 }    

不幸的是,当我尝试将此工件添加为其他项目的依赖项时,Gradle成功找到了WAR,但项目中没有集成任何内容。我在项目中找不到任何HTML,类或war文件。

dependencies {
    compile(group: 'test.spring', name: 'test-layout', version: '0.0.1', ext: 'war')
}

有什么东西丢失了,或者我完全没有这个轨道?

2 个答案:

答案 0 :(得分:1)

将依赖项添加到war文件没有意义,因为这是应用程序服务器的打包而不是其他项目的打包。

我建议您也从原始项目中发布其他工件,而不是将它们作为依赖项导入。

另一种方法是在单独的任务中解压缩战争,但是当您控制源项目时则不需要。

答案 1 :(得分:0)

好的,在Gradle论坛上提出同样的问题之后,似乎没有简单的方法可以使用单个工件来实现这一点而不会丢失所有依赖项(特别感谢Lance_Java)。听起来我必须创建一个JAR和一个ZIP工件(参见前面@Joachim Nilsson帖子中描述的zip引用)

https://discuss.gradle.org/t/how-to-add-an-artifactory-war-as-a-gradle-dependency/19804/4

我的最终解决方案是简单地在“commons”Web存储库下部署我的模板,并在JAR工件中部署我的配置类。