This is an automated email from the ASF dual-hosted git repository.

sdedic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b93c06c85 Micronaut 4 build plugin recognized.
     new f3bbe32159 Merge pull request #6424 from 
sdedic/micronaut/plugin-upgrade
0b93c06c85 is described below

commit 0b93c06c8566661295b28d55207b80173c2d67ea
Author: Svata Dedic <[email protected]>
AuthorDate: Fri Sep 8 08:44:48 2023 +0200

    Micronaut 4 build plugin recognized.
---
 .../netbeans/modules/micronaut/resources/layer.xml |  15 +++
 .../unit/data/maven/micronaut4/simple/.gitignore   |  15 +++
 .../unit/data/maven/micronaut4/simple/README.md    |  24 +++++
 .../maven/micronaut4/simple/aot-jar.properties     |  34 +++++++
 .../data/maven/micronaut4/simple/micronaut-cli.yml |   6 ++
 .../test/unit/data/maven/micronaut4/simple/pom.xml | 112 +++++++++++++++++++++
 .../src/main/java/com/example/Application.java     |  10 ++
 .../src/main/resources/application.properties      |   2 +
 .../simple/src/main/resources/logback.xml          |  14 +++
 .../java/com/example/DemoTestForSvataTest.java     |  21 ++++
 .../maven/MicronautPackagingArtifactImplTest.java  |  63 +++++++++++-
 11 files changed, 312 insertions(+), 4 deletions(-)

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 444894eeb1..19c7090f7d 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 @@
             </folder>
         </folder>
         <folder name="org-netbeans-modules-maven">
+            <!-- For Micornaut 3.x -->
             <folder name="io.micronaut.build:micronaut-maven-plugin">
                 <folder name="Lookup">
                     <file name="maven-project-actions.instance">
@@ -80,6 +81,20 @@
                     </file>
                 </folder>
             </folder>
+            <!-- Micronaut 4.x -->
+            <folder name="io.micronaut.maven:micronaut-maven-plugin">
+                <folder name="Lookup">
+                    <file name="maven-project-actions.instance">
+                        <attr name="instanceOf" 
stringvalue="org.netbeans.spi.project.LookupProvider"/>
+                        <attr name="instanceCreate" 
methodvalue="org.netbeans.api.maven.MavenActions.forProjectLayer"/>
+                        <attr name="resource" 
stringvalue="nbres:/org/netbeans/modules/micronaut/resources/micronaut-actions-maven.xml"/>
+                    </file>
+                    <file name="native-image-artifacts.instance">
+                        <attr name="instanceOf" 
stringvalue="org.netbeans.spi.project.LookupProvider"/>
+                        <attr name="instanceCreate" 
methodvalue="org.netbeans.modules.micronaut.maven.MicronautPackagingArtifactsImpl.projectLookup"/>
+                    </file>
+                </folder>
+            </folder>
             <folder name="org.springframework.boot:spring-boot-maven-plugin">
                 <folder name="Lookup">
                     <file name="maven-project-actions.instance">
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 0000000000..5a03bc30a4
--- /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 0000000000..7b92946326
--- /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 0000000000..336112c638
--- /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.mic
 [...]
+
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 0000000000..8e931992b7
--- /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 0000000000..4427fd6260
--- /dev/null
+++ b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/pom.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.example</groupId>
+  <artifactId>micronaut4test</artifactId>
+  <version>0.1</version>
+  <packaging>${packaging}</packaging>
+
+  <parent>
+    <groupId>io.micronaut.platform</groupId>
+    <artifactId>micronaut-parent</artifactId>
+    <version>4.1.0</version>
+  </parent>
+  <properties>
+    <packaging>jar</packaging>
+    <jdk.version>17</jdk.version>
+    <release.version>17</release.version>
+    <micronaut.version>4.1.0</micronaut.version>
+    <micronaut.aot.enabled>false</micronaut.aot.enabled>
+    
<micronaut.aot.packageName>com.example.aot.generated</micronaut.aot.packageName>
+    <micronaut.runtime>netty</micronaut.runtime>
+    <exec.mainClass>com.example.Application</exec.mainClass>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>central</id>
+      <url>https://repo.maven.apache.org/maven2</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+    <dependency>
+      <groupId>io.micronaut</groupId>
+      <artifactId>micronaut-http-server-netty</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.micronaut.serde</groupId>
+      <artifactId>micronaut-serde-jackson</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.micronaut</groupId>
+      <artifactId>micronaut-http-client</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.micronaut.test</groupId>
+      <artifactId>micronaut-test-junit5</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>io.micronaut.maven</groupId>
+        <artifactId>micronaut-maven-plugin</artifactId>
+          <configuration>
+            <configFile>aot-${packaging}.properties</configFile>
+          </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <!-- Uncomment to enable incremental compilation -->
+          <!-- <useIncrementalCompilation>false</useIncrementalCompilation> -->
+
+          <annotationProcessorPaths combine.children="append">
+            <path>
+              <groupId>io.micronaut.serde</groupId>
+              <artifactId>micronaut-serde-processor</artifactId>
+              <version>${micronaut.serialization.version}</version>
+              <exclusions>
+                <exclusion>
+                  <groupId>io.micronaut</groupId>
+                  <artifactId>micronaut-inject</artifactId>
+                </exclusion>
+              </exclusions>
+            </path>
+          </annotationProcessorPaths>
+          <compilerArgs>
+            <arg>-Amicronaut.processing.group=com.example</arg>
+            <arg>-Amicronaut.processing.module=demoTestForSvata</arg>
+          </compilerArgs>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
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 0000000000..5b4df1d02d
--- /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 0000000000..804cc72c04
--- /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 0000000000..44b79c40d4
--- /dev/null
+++ 
b/enterprise/micronaut/test/unit/data/maven/micronaut4/simple/src/main/resources/logback.xml
@@ -0,0 +1,14 @@
+<configuration>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- encoders are assigned the type
+             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - 
%msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <root level="info">
+        <appender-ref ref="STDOUT" />
+    </root>
+</configuration>
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 0000000000..47804affaf
--- /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 1e63f963b4..c0eb2d76ba 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.ProjectActionContext;
 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 class MicronautPackagingArtifactImplTest extends 
NbTestCase {
         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 class MicronautPackagingArtifactImplTest extends 
NbTestCase {
         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 class MicronautPackagingArtifactImplTest extends 
NbTestCase {
         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 class MicronautPackagingArtifactImplTest extends 
NbTestCase {
         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 class MicronautPackagingArtifactImplTest extends 
NbTestCase {
         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<MavenConfiguration> 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));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to