使用gradle,如何从本地jar表达仅编译时的依赖关系?

使用gradle,如何从本地jar表达仅编译时的依赖关系?,gradle,Gradle,我的项目结构如下: MainProject | |---- ExampleModule | \-src | \-libs | \-LibraryModule-0.1.jar | |---- LibraryModule (from existing source) 我有一个执行以下任务的构建脚本: 构建/编译库模块 制作一个destinationDir设置为ExampleModule/libs的jar/ 组装ExampleModul

我的项目结构如下:

MainProject

|
|---- ExampleModule
|         \-src
|         \-libs
|                \-LibraryModule-0.1.jar
|
|---- LibraryModule (from existing source)
我有一个执行以下任务的构建脚本:

  • 构建/编译库模块
  • 制作一个destinationDir设置为ExampleModule/libs的jar/
  • 组装ExampleModule,它依赖于LibraryModule-0.1.jar
  • 这似乎很简单,但我需要使用这个本地jar附带的compileOnly/provided,因为它不是运行时依赖项。我将如何在ExampleModule build.gradle文件中编写它

    这就是我目前拥有的:

    dependencies {
      compileOnly 'libs:LibraryModule-0.1.jar'
    }
    

    对于本地jar,就像mavenCentral或jcenter的任何依赖项一样,如果在jar文件名的末尾有一个版本号,则必须这样表示:

    compileOnly 'libs:LibraryModule-build:0.1'
    
    请注意,如果我将我的jar命名为“LibraryModule.jar”,只需

    compileOnly 'libs:LibraryModule'
    
    那就行了


    注意-如果您在项目中使用gradle来开发注释处理工具或任何其他仅在编译时依赖的工具,建议您使用。而且,

    你完全错了。你认为注释处理器是如何工作的?@PrestonGarno不会因为人们的错误评论而兴奋。当你保持冷静,像在这里那样回答问题时,人们会认出你是专业人士。如果我是你,我会删除我最后的评论并公布答案@阿尔法森说得好,尽管我认为这样低投入的评论是好的,但我个人知道的足够多的开发人员正是因为这个原因在这里不活跃。@Gabeschen忘了标记,有趣的是,我在写评论时对自己思考了一个罕见的注释处理案例。但由于这是如此罕见,我推开了自己的疑虑。我很高兴你没有太灰心,并发现了一些见解。感谢你发布了一个答案,如果你还可以添加到相关在线资源的链接,那将是极好的@阿尔法辛:有趣的是,我在网上没有找到任何关于它的信息。可能是因为只有编译时依赖项和本地jar的唯一用例(我能想到的)是用于开发元编程库,而这在java和gradle中并没有很好的文档记录(我相信注释处理包含在JDK 1.6+中,gradle还没有正式支持这一点). 在我决定将jar名称缩减为简单的字符以解释正则表达式和gradle在幕后进行的任何解析之后,我就明白了这一点。