4.3.3.2. 构建 UberJar
buildUberJar – CubaUberJarBuilding 类型的任务,会创建一个包含应用程序代码和所有依赖包在一起并且还有嵌入的 Jetty Http 服务的 JAR 包。可以选择创建一个大而全的包含所有的 JAR 包,或者选择给每一个应用程序 block 创建单独的 JAR 包,例如可以给中间件(middleware)创建 app-core.jar,给 web 客户端创建 app.jar。
这个任务需要在 build.gradle 的根节点声明。生成的 JAR 包会放在项目的 build/distributions 目录。参考 UberJAR 部署 章节了解怎么运行生成的 JAR 包。
|
可以通过 Studio 里的 Deployment > UberJAR settings 界面配置这个任务。 |
任务参数:
-
coreJettyEnvPath- 必要参数,设置一个项目根目录的相对路径,这个路径需要指向一个包含 JNDI resource 的配置文件,这些配置是给 Jetty Http Server 用的。配置文件里至少需要包含一份关于主数据库的 JDBC 数据源定义。Studio 可以根据配置的数据库连接参数生成这个文件。task buildUberJar(type: CubaUberJarBuilding) { coreJettyEnvPath = 'modules/core/web/META-INF/jetty-env.xml' // ... }还可以使用不同的 jetty-env.xml 文件和
-jettyEnvPath命令行参数在运行时为同一个 UberJar 提供不同的数据库设置。 -
appProperties- 应用程序属性的键值对。这里面提供的属性键值对会以生成的 JAR 包里的WEB-INF/local.app.properties文件定义的属性为基础添加。task buildUberJar(type: CubaUberJarBuilding) { appProperties = ['cuba.automaticDatabaseUpdate' : true] // ... } -
singleJar- 如果设置成true,会创建一个包含所有模块(core,web,portal)的 JAR 包。默认是false。task buildUberJar(type: CubaUberJarBuilding) { singleJar = true // ... } -
webPort- 单一 JAR 包(singleJar=true)或者 Web 模块的 JAR 包的 Http 服务端口,默认是8080。也可以在运行时通过-port命令行参数动态指定。 -
corePort- core 模块 JAR 包的 Http 服务端口,默认是8079。也可以在运行时启动相应的 JAR 包的时候用命令行参数-port来指定。 -
portalPort- partal 模块 JAR 包的 Http 服务端口,默认是8081。也可以在运行时启动相应的 JAR 包的时候用命令行参数-port来指定。 -
appName- 应用程序名称,默认是app。可以在 Studio 中通过 Project Properties 窗口里的 Module prefix 来给整个项目设置名称,或者也可以通过这个参数只给buildUberJar任务设置。例如:task buildUberJar(type: CubaUberJarBuilding) { appName = 'sales' // ... }当把应用程序名称改成
sales之后,这个任务会生成sales-core.jar和sales.jar文件,web 客户端可以通过http://localhost:8080/sales访问。还能通过运行时的-contextName命令行参数改变 web 上下文,而不需要修改应用程序名称,甚至直接修改 JAR 包的名字也行。 -
logbackConfigurationFile- 日志配置文件的相对目录。比如:
logbackConfigurationFile = "/modules/global/src/logback.xml" -
useDefaultLogbackConfiguration- 当设置成true(也是默认值)的时候,这个任务会拷贝标准的logback.xml配置文件。 -
webJettyConfPath- Jetty Server 配置文件的相对路径,可以给 UberJar(singleJar=true)或者 web JAR(singleJar=false)配置。参考: https://www.eclipse.org/jetty/documentation/9.4.x/jetty-xml-config.html -
coreJettyConfPath- core JAR(singleJar=false)的 Jetty Server 配置文件相对目录,要注意跟上面描述的coreJettyEnvPath相区别。 -
portalJettyConfPath- portal JARsingleJar=false)的 Jetty Server 配置文件相对目录。 -
coreWebXmlPath- 用来作为 core 模块web.xml的文件的相对目录。 -
webWebXmlPath- 用来作为 web 模块web.xml的文件的相对目录。 -
portalWebXmlPath- 用来作为 portal 模块web.xml的文件的相对目录。 -
excludeResources- 正则表达式,表示不需要包含在 JAR 包里面的那些 resource 文件。 -
mergeResources- 正则表达式,表示需要整合在 JAR 包里面的那些 resource 文件。 -
webContentExclude- 正则表达式,表示不需要包含在 web content 里面的那些文件。 -
coreProject- 用来作为 core 模块(Middleware)的 Gradle 项目。如果没定义,则会使用标准的 core 模块。 -
webProject- 用来作为 web 模块(Web Client)的 Gradle 项目。如果没定义,则会使用标准的 web 模块。 -
portalProject- 用来作为 portal 模块(Web Portal)的 Gradle 项目。如果没定义,则会使用标准的 portal 模块。 -
frontProject- 用来作为 Polymer UI 模块的 Gradle 项目。如果没定义,则会使用标准的 polymer-client 模块。 -
polymerBuildDir- Polymer UI 构建生成的目录名称。默认是es6-unbundled。如果在polymer.json里面修改了预设的编译参数的话,需要提供这个参数。