From 0b93c06c8566661295b28d55207b80173c2d67ea Mon Sep 17 00:00:00 2001 From: Svata Dedic Date: Fri, 8 Sep 2023 08:44:48 +0200 Subject: [PATCH] Micronaut 4 build plugin recognized. --- .../modules/micronaut/resources/layer.xml | 15 +++ .../data/maven/micronaut4/simple/.gitignore | 15 +++ .../data/maven/micronaut4/simple/README.md | 24 ++++ .../micronaut4/simple/aot-jar.properties | 34 ++++++ .../maven/micronaut4/simple/micronaut-cli.yml | 6 + .../unit/data/maven/micronaut4/simple/pom.xml | 112 ++++++++++++++++++ .../main/java/com/example/Application.java | 10 ++ .../src/main/resources/application.properties | 2 + .../simple/src/main/resources/logback.xml | 14 +++ .../com/example/DemoTestForSvataTest.java | 21 ++++ .../MicronautPackagingArtifactImplTest.java | 63 +++++++++- 11 files changed, 312 insertions(+), 4 deletions(-) create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/.gitignore create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/README.md create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/aot-jar.properties create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/micronaut-cli.yml create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/pom.xml create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/java/com/example/Application.java create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/application.properties create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/logback.xml create mode 100644 enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/test/java/com/example/DemoTestForSvataTest.java diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml b/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml index 444894eeb188..19c7090f7d1d 100644 --- a/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml +++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml @@ -67,6 +67,7 @@ + @@ -80,6 +81,20 @@ + + + + + + + + + + + + + + diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/.gitignore b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/.gitignore new file mode 100644 index 000000000000..5a03bc30a460 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/.gitignore @@ -0,0 +1,15 @@ +Thumbs.db +.DS_Store +.gradle +build/ +target/ +out/ +.micronaut/ +.idea +*.iml +*.ipr +*.iws +.project +.settings +.classpath +.factorypath diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/README.md b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/README.md new file mode 100644 index 000000000000..7b9294632662 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/README.md @@ -0,0 +1,24 @@ +## Micronaut 4.1.0 Documentation + +- [User Guide](https://docs.micronaut.io/4.1.0/guide/index.html) +- [API Reference](https://docs.micronaut.io/4.1.0/api/index.html) +- [Configuration Reference](https://docs.micronaut.io/4.1.0/guide/configurationreference.html) +- [Micronaut Guides](https://guides.micronaut.io/index.html) +--- + +- [Micronaut Maven Plugin documentation](https://micronaut-projects.github.io/micronaut-maven-plugin/latest/) +## Feature maven-enforcer-plugin documentation + +- [https://maven.apache.org/enforcer/maven-enforcer-plugin/](https://maven.apache.org/enforcer/maven-enforcer-plugin/) + + +## Feature micronaut-aot documentation + +- [Micronaut AOT documentation](https://micronaut-projects.github.io/micronaut-aot/latest/guide/) + + +## Feature serialization-jackson documentation + +- [Micronaut Serialization Jackson Core documentation](https://micronaut-projects.github.io/micronaut-serialization/latest/guide/) + + diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/aot-jar.properties b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/aot-jar.properties new file mode 100644 index 000000000000..336112c638e2 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/aot-jar.properties @@ -0,0 +1,34 @@ +# AOT configuration properties for jar packaging +# Please review carefully the optimizations enabled below +# Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details + +# Caches environment property values: environment properties will be deemed immutable after application startup. +cached.environment.enabled=true + +# Precomputes Micronaut configuration property keys from the current environment variables +precompute.environment.properties.enabled=true + +# Converts YAML configuration files to Java configuration +yaml.to.java.config.enabled=true + +# Scans for service types ahead-of-time, avoiding classpath scanning at startup +serviceloading.jit.enabled=true + +# Scans reactive types at build time instead of runtime +scan.reactive.types.enabled=true + +# Deduces the environment at build time instead of runtime +deduce.environment.enabled=true + +# Checks of existence of some types at build time instead of runtime +known.missing.types.enabled=true + +# Precomputes property sources at build time +sealed.property.source.enabled=true + +# The list of service types to be scanned (comma separated) +service.types=io.micronaut.context.env.PropertySourceLoader,io.micronaut.inject.BeanConfiguration,io.micronaut.inject.BeanDefinitionReference,io.micronaut.http.HttpRequestFactory,io.micronaut.http.HttpResponseFactory,io.micronaut.core.beans.BeanIntrospectionReference + +# A list of types that the AOT analyzer needs to check for existence (comma separated) +known.missing.types.list=io.reactivex.Observable,reactor.core.publisher.Flux,kotlinx.coroutines.flow.Flow,io.reactivex.rxjava3.core.Flowable,io.reactivex.rxjava3.core.Observable,io.reactivex.Single,reactor.core.publisher.Mono,io.reactivex.Maybe,io.reactivex.rxjava3.core.Single,io.reactivex.rxjava3.core.Maybe,io.reactivex.Completable,io.reactivex.rxjava3.core.Completable,io.methvin.watchservice.MacOSXListeningWatchService,io.micronaut.core.async.publisher.CompletableFuturePublisher,io.micronaut.core.async.publisher.Publishers.JustPublisher,io.micronaut.core.async.subscriber.Completable + diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/micronaut-cli.yml b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/micronaut-cli.yml new file mode 100644 index 000000000000..8e931992b712 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/micronaut-cli.yml @@ -0,0 +1,6 @@ +applicationType: default +defaultPackage: com.example +testFramework: junit +sourceLanguage: java +buildTool: maven +features: [app-name, http-client-test, java, java-application, junit, logback, maven, maven-enforcer-plugin, micronaut-aot, netty-server, properties, readme, serialization-jackson, shade] diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/pom.xml b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/pom.xml new file mode 100644 index 000000000000..4427fd62609b --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/pom.xml @@ -0,0 +1,112 @@ + + + 4.0.0 + com.example + micronaut4test + 0.1 + ${packaging} + + + io.micronaut.platform + micronaut-parent + 4.1.0 + + + jar + 17 + 17 + 4.1.0 + false + com.example.aot.generated + netty + com.example.Application + + + + + central + https://repo.maven.apache.org/maven2 + + + + + + io.micronaut + micronaut-http-server-netty + compile + + + io.micronaut.serde + micronaut-serde-jackson + compile + + + ch.qos.logback + logback-classic + runtime + + + io.micronaut + micronaut-http-client + test + + + io.micronaut.test + micronaut-test-junit5 + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + + + + io.micronaut.maven + micronaut-maven-plugin + + aot-${packaging}.properties + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + + + + + io.micronaut.serde + micronaut-serde-processor + ${micronaut.serialization.version} + + + io.micronaut + micronaut-inject + + + + + + -Amicronaut.processing.group=com.example + -Amicronaut.processing.module=demoTestForSvata + + + + + + + diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/java/com/example/Application.java b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/java/com/example/Application.java new file mode 100644 index 000000000000..5b4df1d02de7 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/java/com/example/Application.java @@ -0,0 +1,10 @@ +package com.example; + +import io.micronaut.runtime.Micronaut; + +public class Application { + + public static void main(String[] args) { + Micronaut.run(Application.class, args); + } +} \ No newline at end of file diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/application.properties b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/application.properties new file mode 100644 index 000000000000..804cc72c04a0 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/application.properties @@ -0,0 +1,2 @@ +#Wed Sep 06 13:10:29 GMT 2023 +micronaut.application.name=demoTestForSvata diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/logback.xml b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/logback.xml new file mode 100644 index 000000000000..44b79c40d494 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + diff --git a/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/test/java/com/example/DemoTestForSvataTest.java b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/test/java/com/example/DemoTestForSvataTest.java new file mode 100644 index 000000000000..47804affaf90 --- /dev/null +++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/test/java/com/example/DemoTestForSvataTest.java @@ -0,0 +1,21 @@ +package com.example; + +import io.micronaut.runtime.EmbeddedApplication; +import io.micronaut.test.extensions.junit5.annotation.MicronautTest; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Assertions; + +import jakarta.inject.Inject; + +@MicronautTest +class DemoTestForSvataTest { + + @Inject + EmbeddedApplication application; + + @Test + void testItWorks() { + Assertions.assertTrue(application.isRunning()); + } + +} diff --git a/enterprise/micronaut/test/unit/src/org/netbeans/modules/micronaut/maven/MicronautPackagingArtifactImplTest.java b/enterprise/micronaut/test/unit/src/org/netbeans/modules/micronaut/maven/MicronautPackagingArtifactImplTest.java index 1e63f963b417..c0eb2d76bafc 100644 --- a/enterprise/micronaut/test/unit/src/org/netbeans/modules/micronaut/maven/MicronautPackagingArtifactImplTest.java +++ b/enterprise/micronaut/test/unit/src/org/netbeans/modules/micronaut/maven/MicronautPackagingArtifactImplTest.java @@ -35,11 +35,14 @@ import org.netbeans.api.project.ProjectManager; import org.netbeans.api.project.ui.OpenProjects; import org.netbeans.junit.NbTestCase; +import org.netbeans.modules.maven.api.MavenConfiguration; import org.netbeans.modules.parsing.impl.indexing.implspi.ActiveDocumentProvider; import org.netbeans.modules.project.dependency.ArtifactSpec; import org.netbeans.modules.project.dependency.ProjectArtifactsQuery; import org.netbeans.spi.project.ActionProgress; import org.netbeans.spi.project.ActionProvider; +import org.netbeans.spi.project.ProjectConfiguration; +import org.netbeans.spi.project.ProjectConfigurationProvider; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.modules.DummyInstalledFileLocator; @@ -158,7 +161,7 @@ public void testProjectArtifactWithNormalQuery() throws Exception { FileObject testApp = dataFO.getFileObject("maven/artifacts/simple"); FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "simple"); - Project p = ProjectManager.getDefault().findProject(prjCopy); + Project p = openAndPrimeProject(prjCopy); ProjectArtifactsQuery.ArtifactsResult ar = ProjectArtifactsQuery.findArtifacts(p, ProjectArtifactsQuery.newQuery(null)); assertNotNull(ar); @@ -176,7 +179,7 @@ public void testProjectNoArtifactForNonExistingNativeBuild() throws Exception { FileObject testApp = dataFO.getFileObject("maven/artifacts/simple"); FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "simple"); - Project p = ProjectManager.getDefault().findProject(prjCopy); + Project p = openAndPrimeProject(prjCopy); ProjectArtifactsQuery.ArtifactsResult ar = ProjectArtifactsQuery.findArtifacts(p, ProjectArtifactsQuery.newQuery(null, null, ProjectActionContext.newBuilder(p).forProjectAction("native-build").context()) @@ -195,7 +198,7 @@ public void testProjectArtifactOptionalNativePackaging() throws Exception { FileObject testApp = dataFO.getFileObject("maven/artifacts/native-optional"); FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "native-optional"); - Project p = ProjectManager.getDefault().findProject(prjCopy); + Project p = openAndPrimeProject(prjCopy); ProjectArtifactsQuery.ArtifactsResult ar = ProjectArtifactsQuery.findArtifacts(p, ProjectArtifactsQuery.newQuery(null)); assertNotNull(ar); @@ -213,7 +216,7 @@ public void testAllArtifactOptionalNativePackaging() throws Exception { FileObject testApp = dataFO.getFileObject("maven/artifacts/native-optional"); FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "native-optional"); - Project p = ProjectManager.getDefault().findProject(prjCopy); + Project p = openAndPrimeProject(prjCopy); ProjectArtifactsQuery.ArtifactsResult ar = ProjectArtifactsQuery.findArtifacts(p, ProjectArtifactsQuery.newQuery(ProjectArtifactsQuery.Filter.TYPE_ALL)); assertNotNull(ar); @@ -312,4 +315,56 @@ public void testAllArtifactsWithNativePackaging() throws Exception { assertNotNull("Exe should be present", jar); assertFalse("Exe should not contain the version",exe.getLocation().toString().contains("0.1")); } + + /** + * Checks that non-Micronaut project does not provide 'micronaut-auto' profile. + * @throws Exception + */ + public void testNoMicronautNodevModeConfiguration() throws Exception { + FileUtil.toFileObject(getWorkDir()).refresh(); + + FileObject testApp = dataFO.getFileObject("maven/artifacts/simple"); + FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "simple"); + + Project p = openAndPrimeProject(prjCopy); + assertFalse(findMicronautProfile(p)); + } + + /** + * Checks that Micronaut 3.x style projects (with io.micronaut.build: plugin) is recognized. + */ + public void testMicronaut3DevModeConfiguration() throws Exception { + FileUtil.toFileObject(getWorkDir()).refresh(); + + FileObject testApp = dataFO.getFileObject("maven/artifacts/native-optional"); + FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "mn-simple"); + + Project p = openAndPrimeProject(prjCopy); + assertTrue(findMicronautProfile(p)); + } + + boolean findMicronautProfile(Project p) { + ProjectConfigurationProvider pcp = p.getLookup().lookup(ProjectConfigurationProvider.class); + assertNotNull(pcp); + + for (MavenConfiguration cfg : pcp.getConfigurations()) { + if (cfg.getDisplayName().toLowerCase().contains("micronaut")) { + return true; + } + } + return false; + } + + /** + * Checks that Micronaut 4.x style projects (with io.micronaut.maven: plugin) is recognized. + */ + public void testMicronaut4DevModeConfiguration() throws Exception { + FileUtil.toFileObject(getWorkDir()).refresh(); + + FileObject testApp = dataFO.getFileObject("maven/micronaut4/simple"); + FileObject prjCopy = FileUtil.copyFile(testApp, FileUtil.toFileObject(getWorkDir()), "mn4-simple"); + + Project p = openAndPrimeProject(prjCopy); + assertTrue(findMicronautProfile(p)); + } }