diff options
author | dimdim11 <dimdim11@yandex-team.com> | 2024-11-15 00:07:26 +0300 |
---|---|---|
committer | dimdim11 <dimdim11@yandex-team.com> | 2024-11-15 00:16:57 +0300 |
commit | ea4efd148c04ba3a8682fea3c59b58baf172548e (patch) | |
tree | eeb3b3eed70e85226e6ec1f8f40ac6860f323e89 | |
parent | 7f616bd2969d2a94edb34570d52813e98a1118fc (diff) | |
download | ydb-ea4efd148c04ba3a8682fea3c59b58baf172548e.tar.gz |
Upgrades for AP in templates, some fixes
Upgrades for AP in templates, some fixes
commit_hash:63f7bbc30e5df3c590e65c9b54346158193efd45
5 files changed, 65 insertions, 31 deletions
diff --git a/build/export_generators/gradle/generator.toml b/build/export_generators/gradle/generator.toml index 64f1d2e192..bccc600a73 100644 --- a/build/export_generators/gradle/generator.toml +++ b/build/export_generators/gradle/generator.toml @@ -17,14 +17,16 @@ template="build.gradle.kts.jinja" template={ path="build.gradle.kts.proto.jinja", dest="build.gradle.kts" } [attrs.target] +# DEPRECATED +annotation_processors="list" + required_jdk="str" add_vcs_info_to_mf="bool" junit4_test="flag" junit5_test="flag" app_main_class="str" enable_preview="flag" -annotation_processors="list" -use_annotation_processor="str" +use_annotation_processor="list" publish="flag" publish_group="str" diff --git a/build/export_generators/ide-gradle/build.gradle.kts.jinja b/build/export_generators/ide-gradle/build.gradle.kts.jinja index 5900458fe8..8299b4db6f 100644 --- a/build/export_generators/ide-gradle/build.gradle.kts.jinja +++ b/build/export_generators/ide-gradle/build.gradle.kts.jinja @@ -3,13 +3,27 @@ buildDir = file(baseBuildDir + project.path.replaceFirst(":", "/").replace(":", subprojects { buildDir = file(baseBuildDir + project.path.replaceFirst(":", "/").replace(":", ".")) } - -{% set mainClass = target.app_main_class -%} +{%- set mainClass = target.app_main_class -%} {%- set publish = target.publish -%} {%- set with_kotlin = target.with_kotlin -%} {%- set kotlin_version = target.kotlin_version -%} {%- set hasJunit5Test = extra_targets|selectattr('junit5_test') -%} {%- set errorprone_plugin_version = "4.0.0" -%} + +{%- if not target.required_jdk -%} +{%- set has_required_jdk = false -%} +{#- If no required JDK, set default JDK for Kotlin parts -#} +{%- set required_jdk = '17' -%} +{%- else -%} +{%- set has_required_jdk = true -%} +{#- Use JDK 23 instead 22 -#} +{%- if target.required_jdk == '22' -%} +{%- set required_jdk = '23' -%} +{%- else -%} +{%- set required_jdk = target.required_jdk -%} +{%- endif -%} +{%- endif %} + plugins { {#- some plugins configuration -#} {%- for library in target.consumer if library.classpath -%} @@ -20,8 +34,10 @@ plugins { {%- endif -%} {%- endfor -%} + {#- lombok configuration -#} -{%- if "lombok.launch.AnnotationProcessorHider$AnnotationProcessor" in target.annotation_processors %} +{#- TODO remove annotation_processors -#} +{%- if ("lombok.launch.AnnotationProcessorHider$AnnotationProcessor" in target.annotation_processors) or (target.use_annotation_processor|length and target.use_annotation_processor|select('startsWith', 'contrib/java/org/projectlombok/lombok')|length) %} id("io.freefair.lombok") version "8.6" {%- endif -%} {%- if mainClass %} @@ -49,11 +65,13 @@ plugins { {% endif -%} {%- endif %} } + {#- language level -#} -{%- if target.required_jdk is defined and target.required_jdk|length %} +{%- if has_required_jdk %} + java { toolchain { - languageVersion = JavaLanguageVersion.of("{{ target.required_jdk }}") + languageVersion = JavaLanguageVersion.of("{{ required_jdk }}") } } {% endif -%} @@ -118,24 +136,24 @@ noArg { {%- if with_kotlin %} kotlin { - jvmToolchain({%- if target.required_jdk -%}{{ target.required_jdk }}{%- else -%}17{%- endif -%}) + jvmToolchain({{ required_jdk }}) } {% endif -%} + {%- if publish %} group = "{{ target.publish_group }}" version = {% if target.publish_version and target.publish_version != "no" -%}"{{ target.publish_version }}"{%- else -%}project.properties["version"]!!{%- endif %} -{% endif %} +{% endif -%} + +{%- if target.enable_preview %} -{% if target.enable_preview %} tasks.withType<JavaCompile> { options.compilerArgs.add("--enable-preview") - options.compilerArgs.add("-Xlint:preview") - options.release.set({%- if target.required_jdk -%}{{ target.required_jdk }}{%- else -%}17{%- endif -%}) + options.release.set({{ required_jdk }}) } - tasks.withType<JavaExec> { jvmArgs?.add("--enable-preview") } @@ -146,20 +164,21 @@ tasks.withType<Test> { tasks.withType<Javadoc> { val javadocOptions = options as CoreJavadocOptions - javadocOptions.addStringOption("source", "{%- if target.required_jdk -%}{{ target.required_jdk }}{%- else -%}17{%- endif -%}") + javadocOptions.addStringOption("source", "{{ required_jdk }}") javadocOptions.addBooleanOption("-enable-preview", true) } -{% endif %} +{% endif -%} {#- javac flags -#} -{%- if (target.javac.flags is defined) and (target.javac.flags|length) %} +{%- if target.javac.flags|length -%} +{%- set javac_flags = target.javac.flags|reject('startsWith', '-Xep:') -%} +{%- if javac_flags|length %} + tasks.withType<JavaCompile> { -{%- for javac_flag in target.javac.flags %} -{%- if '-Xep:' in javac_flag %} -{% else %} +{%- for javac_flag in javac_flags %} options.compilerArgs.add("{{ javac_flag }}") +{%- endfor -%} {%- endif %} -{%- endfor %} } {%- endif %} @@ -288,6 +307,10 @@ dependencies { {%- endif -%} {%- endfor -%} +{%- for annotation_processor in target.use_annotation_processor %} + annotationProcessor(files("$project_root/{{ annotation_processor}}")) +{%- endfor -%} + {%- for extra_target in extra_targets -%} {%- for library in extra_target.consumer if library.classpath -%} {%- if library.prebuilt and library.jar and (library.type != "contrib" or build_contribs) %} @@ -312,14 +335,17 @@ dependencies { {%- endif -%} {%- endif -%} {%- endfor -%} +{%- for annotation_processor in extra_target.use_annotation_processor %} + testAnnotationProcessor(files("$project_root/{{ annotation_processor}}")) +{%- endfor -%} {%- endfor %} } -{% if hasJunit5Test -%} +{%- if hasJunit5Test %} + tasks.named<Test>("test") { useJUnitPlatform() } - {% endif -%} {#- run_java_program -#} @@ -394,7 +420,8 @@ tasks { {% if publish -%} {% include 'publish.gradle.kts' ignore missing -%} {% endif -%} -{# To disable redundant javadoc (it may fail the build) #} +{#- To disable redundant javadoc (it may fail the build) #} + tasks.withType<Javadoc>().configureEach { isEnabled = false } diff --git a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja index 7e0e0c1990..f1da347c15 100644 --- a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja +++ b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja @@ -94,11 +94,11 @@ dependencies { {%- endif -%} {%- endfor %} -{% if target.proto_namespace -%} +{%- if target.proto_namespace %} protobuf(files(File(buildProtoDir, "{{ target.proto_namespace }}"))) -{% else -%} +{%- else %} protobuf(files(buildProtoDir)) -{% endif -%} +{%- endif %} } protobuf { diff --git a/build/export_generators/ide-gradle/generator.toml b/build/export_generators/ide-gradle/generator.toml index 764441cbbb..4bd8f5947f 100644 --- a/build/export_generators/ide-gradle/generator.toml +++ b/build/export_generators/ide-gradle/generator.toml @@ -20,6 +20,9 @@ template="build.gradle.kts.jinja" template={ path="build.gradle.kts.proto.jinja", dest="build.gradle.kts" } [attrs.target] +# DEPRECATED +annotation_processors="list" + required_jdk="str" add_vcs_info_to_mf="bool" junit4_test="flag" @@ -27,8 +30,7 @@ junit5_test="flag" app_main_class="str" jar_source_set="list" enable_preview="flag" -annotation_processors="list" -use_annotation_processor="str" +use_annotation_processor="list" publish="flag" publish_group="str" diff --git a/build/export_generators/ide-gradle/settings.gradle.kts.jinja b/build/export_generators/ide-gradle/settings.gradle.kts.jinja index a71aefe4f4..ca32319453 100644 --- a/build/export_generators/ide-gradle/settings.gradle.kts.jinja +++ b/build/export_generators/ide-gradle/settings.gradle.kts.jinja @@ -1,9 +1,12 @@ rootProject.name = "{{ project_name }}" -{% for subdir in subdirs -%} -{%- set classname = subdir | replace("/", ":") -%} +{% if subdirs|length > 1 -%} +{#- Apply list if not only root in it -#} +{%- for subdir in subdirs -%} +{%- set classname = subdir | replace("/", ":") -%} include(":{{ classname }}") project(":{{ classname }}").projectDir = file("{{ arcadia_root }}/{{ subdir }}") -{% endfor -%} +{% endfor -%} +{%- endif -%} {%- include "[generator]/debug.jinja" ignore missing -%} |