我需要这样的建议来解决以下建立的多项目
在项目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中?
非常感谢