Gradle:多项目gradle构建 - 在项目B的编译期间调用项目A中找到的类的方法

时间:2017-10-05 13:23:20

标签: gradle

我需要这样的建议来解决以下建立的多项目

在项目A中我有一类这样的类用于创建Web服务存根:

/src/main/java/com/mycompany/GenerateWSStubs.java

该类有一个方法: public static void main(String [] args)抛出异常 连接到某些web服务并基于它们生成java类

In project B我有一个课程而不是需要项目A

生成的课程

/src/main/java/com/mycompany/Client.java

我的挑战是能够:

1)在B之前编译A(简单)

2)将com.mycompany.GenerateWSStubs.class提供给项目B(不知道如何)

3)从项目B构建开始,在解析B依赖关系之前调用com.mycompany.GenerateWSStubs.main('')。 (我知道怎么做,但在依赖关系解决之前没有) 这会将一些类输出到一个包com / mycompany / ws / ...我只需要在编译之前将其提供给B

4)编译并打包到jar,项目B包括:(不知道如何) com / mycompany / ws / ...(通过运行com.mycompany.GenerateWSStubs.main('')生成的类) COM / myCompany的/ Client.class

到目前为止我尝试过:

A.gradle

apply plugin: 'java-library'
dependencies {  
    implementation group: 'junit', name: 'junit', version: '4.12'
    implementation group: 'org.apache.axis2', name: 'axis2-adb-codegen', version: '1.7.6'
}

B.gradle

    buildscript {
       dependencies {
     //the following seems working but is terrible way to specifying  this inclusion, and the jar might not be there if I did a clean
          classpath files("../A/build/libs/A.jar")
       }
    }
    apply plugin: 'java-library'
    dependencies {  
        implementation group: 'junit', name: 'junit', version: '4.12'
        implementation group: 'org.apache.axis2', name: 'axis2-adb-codegen', version: '1.7.6'
       // The following does not seems to allow adding com.mycompany.GenerateWSStubs to the compile path to allow me running main
        compileClasspath project(':A')
    }

compileJava {
        // This should ensure that A.jar is built
    dependsOn ':A:build'
    doFirst {
           def obj = new com.mycompany.GenerateWSStubs()
       obj.main('someparameters')
    }
}

问题:

1)除非我使用buildscript def obj = new com.mycompany.GenerateWSStubs()失败。如何根据要在另一个项目中编译的类创建一个对象,而不像我那样静态引用jar?

2)com.mycompany.GenerateWSStubs.main()接受几个参数来了解如何读取某些URL以及存储存根类的位置。

a)我在gradle中使用什么变量来引用标准资源位置(src / main / resources)

b)我应该在哪里输出由com.mycompany.GenerateWSStubs.main()生成的类,以确保它们用于项目B中的依赖项并打包在B.jar中?

非常感谢

0 个答案:

没有答案