├── integration-tests └── src │ └── test │ ├── projects │ ├── input-stream │ │ └── .mvn │ │ │ └── .gitkeep │ ├── raw-streams │ │ └── .mvn │ │ │ └── maven.config │ ├── upgrades-in-bom │ │ ├── parent │ │ │ ├── .mvn │ │ │ │ └── .gitkeep │ │ │ ├── module │ │ │ │ └── src │ │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── upgrades │ │ │ │ │ └── bom │ │ │ │ │ └── module │ │ │ │ │ └── UseHello.java │ │ │ └── bom │ │ │ │ └── pom.xml │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── hello-0.0.1 │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── upgrades │ │ │ │ └── bom │ │ │ │ └── hello │ │ │ │ └── Hello.java │ │ └── hello-0.0.2-SNAPSHOT │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── upgrades │ │ │ └── bom │ │ │ └── hello │ │ │ └── Hello.java │ ├── new-managed-module │ │ ├── parent │ │ │ ├── .mvn │ │ │ │ └── .gitkeep │ │ │ ├── module │ │ │ │ ├── src │ │ │ │ │ └── main │ │ │ │ │ │ └── java │ │ │ │ │ │ └── org │ │ │ │ │ │ └── mvndaemon │ │ │ │ │ │ └── mvnd │ │ │ │ │ │ └── test │ │ │ │ │ │ └── upgrades │ │ │ │ │ │ └── bom │ │ │ │ │ │ └── module │ │ │ │ │ │ └── UseHello.java │ │ │ │ └── pom.xml │ │ │ └── bom │ │ │ │ └── pom.xml │ │ ├── .mvn │ │ │ └── maven.config │ │ └── changes │ │ │ ├── new-module │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── upgrades │ │ │ │ │ └── nw │ │ │ │ │ └── module │ │ │ │ │ └── Hello.java │ │ │ └── pom.xml │ │ │ └── module │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── upgrades │ │ │ └── bom │ │ │ └── module │ │ │ └── UseHello.java │ ├── parent-with-property │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── child │ │ │ └── pom.xml │ │ └── pom.xml │ ├── max-heap │ │ ├── jvm-config │ │ │ ├── .mvn │ │ │ │ ├── jvm.config │ │ │ │ └── maven.config │ │ │ └── pom.xml │ │ ├── mvnd-props │ │ │ ├── .mvn │ │ │ │ ├── maven.config │ │ │ │ └── mvnd.properties │ │ │ └── pom.xml │ │ └── default-heap │ │ │ ├── .mvn │ │ │ └── maven.config │ │ │ └── pom.xml │ ├── specific-file │ │ ├── prj1 │ │ │ ├── .mvn │ │ │ │ ├── jvm.config │ │ │ │ └── maven.config │ │ │ └── pom.xml │ │ └── prj2 │ │ │ ├── .mvn │ │ │ ├── jvm.config │ │ │ └── maven.config │ │ │ └── pom.xml │ ├── maven-conf │ │ ├── .mvn │ │ │ └── maven.config │ │ └── pom.xml │ ├── dup-ga │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── hi1 │ │ │ └── pom.xml │ │ └── hi2 │ │ │ └── pom.xml │ ├── forked │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── mod1 │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── forked │ │ │ │ │ └── mod1 │ │ │ │ │ └── Greeting.java │ │ │ └── pom.xml │ │ └── mod2 │ │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── forked │ │ │ │ └── mod2 │ │ │ │ └── Hi.java │ │ │ └── pom.xml │ ├── invoker │ │ ├── .mvn │ │ │ └── maven.config │ │ └── src │ │ │ └── it │ │ │ └── invoke-hello │ │ │ ├── invoker.properties │ │ │ └── verify.groovy │ ├── daemon-crash │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── hello │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── multi │ │ │ │ │ └── module │ │ │ │ │ └── hello │ │ │ │ │ └── Hello.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hello │ │ │ │ └── HelloTest.java │ │ └── plugin │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── module │ │ │ └── plugin │ │ │ └── mojo │ │ │ └── HelloMojo.java │ ├── delete-repo │ │ ├── .mvn │ │ │ └── maven.config │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── single │ │ │ │ └── module │ │ │ │ └── Hello.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── single │ │ │ └── module │ │ │ └── HelloTest.java │ ├── environment │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── prj1 │ │ │ └── pom.xml │ │ └── prj2 │ │ │ └── pom.xml │ ├── exec-output │ │ ├── .mvn │ │ │ └── maven.config │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ ├── Greeting.java │ │ │ └── HelloWorld.java │ ├── extensions │ │ ├── .mvn │ │ │ ├── maven.config │ │ │ └── extensions.xml │ │ └── pom.xml │ ├── multi-lookup │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── api │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── multi │ │ │ │ │ └── module │ │ │ │ │ └── api │ │ │ │ │ └── Greeting.java │ │ │ └── pom.xml │ │ ├── hi │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── multi │ │ │ │ │ └── module │ │ │ │ │ └── hi │ │ │ │ │ └── Hi.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hi │ │ │ │ └── HiTest.java │ │ └── hello │ │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hello │ │ │ │ └── Hello.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── multi │ │ │ └── module │ │ │ └── hello │ │ │ └── HelloTest.java │ ├── multi-module │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── api │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── multi │ │ │ │ │ └── module │ │ │ │ │ └── api │ │ │ │ │ └── Greeting.java │ │ │ └── pom.xml │ │ ├── hi │ │ │ └── src │ │ │ │ ├── main │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── multi │ │ │ │ │ └── module │ │ │ │ │ └── hi │ │ │ │ │ └── Hi.java │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hi │ │ │ │ └── HiTest.java │ │ └── hello │ │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hello │ │ │ │ └── Hello.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── multi │ │ │ └── module │ │ │ └── hello │ │ │ └── HelloTest.java │ ├── single-module │ │ ├── .mvn │ │ │ └── maven.config │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── single │ │ │ │ └── module │ │ │ │ └── Hello.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── single │ │ │ └── module │ │ │ └── HelloTest.java │ ├── bootstrap-plugin │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── bootstrap │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ └── resources │ │ │ │ │ └── org │ │ │ │ │ └── reproducer │ │ │ │ │ └── Model.java │ │ │ └── pom.xml │ │ ├── startup │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── reproducer │ │ │ │ └── MainClass.java │ │ └── pom.xml │ ├── extension-with-api │ │ ├── .mvn │ │ │ ├── maven.config │ │ │ └── extensions.xml │ │ ├── extension │ │ │ ├── .mvn │ │ │ │ └── maven.config │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── mvndaemon │ │ │ │ │ └── mvnd │ │ │ │ │ └── test │ │ │ │ │ └── extension │ │ │ │ │ └── with │ │ │ │ │ └── api │ │ │ │ │ └── extension │ │ │ │ │ ├── TheApi.java │ │ │ │ │ └── TheImpl.java │ │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── maven │ │ │ │ └── extension.xml │ │ ├── plugin │ │ │ ├── .mvn │ │ │ │ └── maven.config │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── extension │ │ │ │ └── with │ │ │ │ └── api │ │ │ │ └── plugin │ │ │ │ └── TheMojo.java │ │ └── pom.xml │ ├── module-and-plugin │ │ ├── .mvn │ │ │ └── maven.config │ │ └── hello │ │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── multi │ │ │ │ └── module │ │ │ │ └── hello │ │ │ │ └── Hello.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── multi │ │ │ └── module │ │ │ └── hello │ │ │ └── HelloTest.java │ ├── type-description │ │ ├── .mvn │ │ │ └── maven.config │ │ └── server │ │ │ └── src │ │ │ └── main │ │ │ ├── resources │ │ │ ├── log4j.properties │ │ │ └── application.properties │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── type │ │ │ └── description │ │ │ └── server │ │ │ ├── Main.java │ │ │ └── domain │ │ │ └── AbstractEntity.java │ ├── concurrent-downloads │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── mod1 │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── test │ │ │ │ └── concurrent │ │ │ │ └── downloads │ │ │ │ └── mod1 │ │ │ │ └── Greeting.java │ │ └── mod2 │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── test │ │ │ └── concurrent │ │ │ └── downloads │ │ │ └── mod2 │ │ │ └── Hi.java │ ├── attached-artifact-resolution │ │ ├── .mvn │ │ │ └── maven.config │ │ ├── jdt │ │ │ └── pom.xml │ │ ├── pom.xml │ │ └── java-frontend │ │ │ └── pom.xml │ ├── resident-extensions │ │ ├── project1 │ │ │ └── .mvn │ │ │ │ └── maven.config │ │ └── project2 │ │ │ └── .mvn │ │ │ └── maven.config │ ├── maven-conf-ignore-ext │ │ ├── .mvn │ │ │ └── extensions.xml │ │ └── pom.xml │ └── maven-conf-ignore-ext-def │ │ ├── .mvn │ │ └── extensions.xml │ │ └── pom.xml │ ├── resources │ ├── settings-template.xml │ └── maven.logger.properties │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ ├── it │ ├── InvokerTest.java │ ├── ExtensionsTest.java │ ├── MavenConfTest.java │ ├── DeleteRepoTest.java │ ├── InputStreamTest.java │ ├── ThreadOptionTest.java │ ├── UpgradesInBomTest.java │ ├── ModuleAndPluginTest.java │ ├── NewManagedModuleTest.java │ ├── MavenConfIgnoreExtTest.java │ ├── CompletionTest.java │ ├── MavenConfIgnoreExtDefNativeIT.java │ ├── VersionTest.java │ ├── MavenConfIgnoreExtDefTest.java │ ├── AlpineLinuxTest.java │ ├── MaxHeapTest.java │ ├── MavenConfIgnoreExtNativeIT.java │ ├── AttachedArtifactResolutionTest.java │ ├── DupGATest.java │ └── TypeDescriptionTest.java │ └── junit │ ├── ClientFactory.java │ └── MvndTest.java ├── src └── main │ └── images │ ├── console-output.png │ └── mvnd-logo-256x256.png ├── logging ├── src │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ ├── services │ │ │ └── org.apache.maven.slf4j.MavenLoggerFactory │ │ │ └── maven │ │ │ └── slf4j-configuration.properties │ │ └── java │ │ └── org │ │ └── mvndaemon │ │ └── mvnd │ │ └── logging │ │ └── slf4j │ │ └── MvndLoggerFactory.java └── pom.xml ├── native └── src │ ├── main │ ├── resources │ │ ├── META-INF │ │ │ └── native-image │ │ │ │ └── mvndnative │ │ │ │ └── resource-config.json │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── nativ │ │ │ ├── Linux │ │ │ ├── arm │ │ │ │ └── libmvndnative.so │ │ │ ├── x86 │ │ │ │ └── libmvndnative.so │ │ │ ├── arm64 │ │ │ │ └── libmvndnative.so │ │ │ ├── armv6 │ │ │ │ └── libmvndnative.so │ │ │ ├── armv7 │ │ │ │ └── libmvndnative.so │ │ │ ├── ppc64 │ │ │ │ └── libmvndnative.so │ │ │ └── x86_64 │ │ │ │ └── libmvndnative.so │ │ │ ├── Windows │ │ │ ├── x86 │ │ │ │ └── mvndnative.dll │ │ │ └── x86_64 │ │ │ │ └── mvndnative.dll │ │ │ ├── FreeBSD │ │ │ ├── x86 │ │ │ │ └── libmvndnative.so │ │ │ └── x86_64 │ │ │ │ └── libmvndnative.so │ │ │ ├── Mac │ │ │ ├── x86 │ │ │ │ └── libmvndnative.jnilib │ │ │ ├── arm64 │ │ │ │ └── libmvndnative.jnilib │ │ │ └── x86_64 │ │ │ │ └── libmvndnative.jnilib │ │ │ └── mvndnative.properties │ └── java │ │ └── org │ │ └── mvndaemon │ │ └── mvnd │ │ └── nativ │ │ └── CLibrary.java │ └── test │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ └── nativ │ └── MvndNativeLoaderTest.java ├── .mvn ├── extensions.xml ├── wrapper │ └── maven-wrapper.properties ├── gradle-enterprise.xml └── release-settings.xml ├── NOTICE.txt ├── .gitignore ├── dist └── src │ └── main │ ├── resources │ ├── platform-linux-amd64 │ ├── platform-darwin-aarch64 │ ├── platform-darwin-amd64 │ └── platform-windows-amd64 │ └── distro │ ├── mvn │ ├── conf │ │ └── logging │ │ │ └── java.util.logging.properties │ └── bin │ │ └── m2.conf │ └── bin │ ├── mvnd-daemon.conf │ └── mvnd-client.conf ├── .git-blame-ignore-revs ├── .github ├── ci-mimir-daemon.properties ├── ci-extensions.xml ├── workflows │ ├── stale.yml │ └── pr-automation.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── FEATURE.yml │ └── BUG.yml └── dependabot.yml ├── client └── src │ ├── main │ ├── resources │ │ ├── org │ │ │ └── mvndaemon │ │ │ │ └── mvnd │ │ │ │ └── client │ │ │ │ └── build.properties │ │ └── glibc │ │ │ ├── gcc │ │ │ └── glibc.redef │ ├── java │ │ └── org │ │ │ └── mvndaemon │ │ │ └── mvnd │ │ │ └── client │ │ │ ├── Client.java │ │ │ └── ExecutionResult.java │ └── java-fallback │ │ └── org │ │ └── mvndaemon │ │ └── mvnd │ │ └── client │ │ └── DefaultClient.java │ └── test │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ └── client │ ├── DaemonConnectorTest.java │ └── OsUtilsTest.java ├── common └── src │ └── main │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ └── common │ ├── ProcessHelper.java │ ├── DaemonState.java │ ├── JavaVersion.java │ ├── SignalHelper.java │ ├── DaemonExpirationStatus.java │ ├── logging │ └── ClientOutput.java │ ├── BufferCaster.java │ └── SocketHelper.java ├── .asf.yaml ├── daemon └── src │ ├── main │ └── java │ │ └── org │ │ ├── mvndaemon │ │ └── mvnd │ │ │ ├── cache │ │ │ ├── CacheFactory.java │ │ │ └── CacheRecord.java │ │ │ └── daemon │ │ │ └── Connection.java │ │ └── apache │ │ └── maven │ │ └── cli │ │ ├── DaemonCli.java │ │ └── DaemonMessageBuilderFactory.java │ └── test │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ └── daemon │ ├── DaemonMemoryStatusTest.java │ └── ClientDispatcherTest.java ├── helper ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── mvndaemon │ └── mvnd │ └── pump │ └── AgentHelper.java └── RELEASING.adoc /integration-tests/src/test/projects/input-stream/.mvn/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/raw-streams/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/parent/.mvn/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/parent/.mvn/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/parent-with-property/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/jvm-config/.mvn/jvm.config: -------------------------------------------------------------------------------- 1 | -Xmx140M -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj1/.mvn/jvm.config: -------------------------------------------------------------------------------- 1 | -Dfoo-bar=xx-prj1-xx 2 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj2/.mvn/jvm.config: -------------------------------------------------------------------------------- 1 | -Dfoo-bar=xx-prj2-xx 2 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dsomething=${session.rootDirectory} 2 | -------------------------------------------------------------------------------- /src/main/images/console-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/src/main/images/console-output.png -------------------------------------------------------------------------------- /src/main/images/mvnd-logo-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/src/main/images/mvnd-logo-256x256.png -------------------------------------------------------------------------------- /logging/src/main/resources/META-INF/services/org.apache.maven.slf4j.MavenLoggerFactory: -------------------------------------------------------------------------------- 1 | org.mvndaemon.mvnd.logging.slf4j.MvndLoggerFactory -------------------------------------------------------------------------------- /native/src/main/resources/META-INF/native-image/mvndnative/resource-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | {"pattern": "org/mvndaemon/mvnd/nativ/.*"} 4 | ] 5 | } -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/arm/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/arm/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/x86/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/x86/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Windows/x86/mvndnative.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Windows/x86/mvndnative.dll -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/FreeBSD/x86/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/FreeBSD/x86/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/arm64/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/arm64/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/armv6/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/armv6/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/armv7/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/armv7/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/ppc64/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/ppc64/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/x86_64/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Linux/x86_64/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/x86/libmvndnative.jnilib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/x86/libmvndnative.jnilib -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Windows/x86_64/mvndnative.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Windows/x86_64/mvndnative.dll -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/FreeBSD/x86_64/libmvndnative.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/FreeBSD/x86_64/libmvndnative.so -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/arm64/libmvndnative.jnilib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/arm64/libmvndnative.jnilib -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/x86_64/libmvndnative.jnilib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/maven-mvnd/HEAD/native/src/main/resources/org/mvndaemon/mvnd/nativ/Mac/x86_64/libmvndnative.jnilib -------------------------------------------------------------------------------- /integration-tests/src/test/projects/dup-ga/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/forked/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/invoker/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/daemon-crash/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/delete-repo/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/environment/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/exec-output/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extensions/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/jvm-config/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/single-module/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/bootstrap-plugin/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/mvnd-props/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/module-and-plugin/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj1/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj2/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/type-description/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/concurrent-downloads/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/default-heap/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/attached-artifact-resolution/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/extension/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/plugin/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/resident-extensions/project1/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/resident-extensions/project2/.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 2 | -Dmaven.wagon.http.retryHandler.requestSentEnabled=true 3 | -Dmaven.wagon.http.retryHandler.count=10 4 | -------------------------------------------------------------------------------- /.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | eu.maveniverse.maven.nisse 6 | extension 7 | 0.6.2 8 | 9 | 10 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf-ignore-ext/.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | foo 6 | bar 7 | 1.0.0 8 | 9 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf-ignore-ext-def/.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | io.takari.maven 6 | takari-smart-builder 7 | 0.6.4 8 | 9 | -------------------------------------------------------------------------------- /NOTICE.txt: -------------------------------------------------------------------------------- 1 | This project contains code coming from other projects 2 | licensed under the Apache Software License 2.0: 3 | 4 | - Apache Maven project (https://maven.apache.org) 5 | - Takari Smart Builder (https://github.com/takari/takari-smart-builder) 6 | - maven-buildtime-extension (https://github.com/timgifford/maven-buildtime-extension) 7 | - Apache Karaf (https://karaf.apache.org) 8 | - Gradle Launcher (https://github.com/gradle/gradle/tree/master/subprojects/launcher) 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Maven 2 | target/ 3 | pom.xml.tag 4 | pom.xml.releaseBackup 5 | pom.xml.versionsBackup 6 | pom.xml.next 7 | release.properties 8 | dependency-reduced-pom.xml 9 | 10 | # Eclipse 11 | .project 12 | .classpath 13 | .settings/ 14 | 15 | # IDEA 16 | .idea 17 | *.ipr 18 | *.iml 19 | *.iws 20 | 21 | # NetBeans 22 | nb-configuration.xml 23 | 24 | # OSX 25 | .DS_Store 26 | 27 | # VS Code 28 | .vscode/ 29 | 30 | # formatter-maven-plugin 31 | .cache/ 32 | 33 | # https://ge.apache.org 34 | .mvn/.gradle-enterprise -------------------------------------------------------------------------------- /dist/src/main/resources/platform-linux-amd64: -------------------------------------------------------------------------------- 1 | Copyright 2019-2021 the original author or authors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /dist/src/main/resources/platform-darwin-aarch64: -------------------------------------------------------------------------------- 1 | Copyright 2019-2021 the original author or authors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /dist/src/main/resources/platform-darwin-amd64: -------------------------------------------------------------------------------- 1 | Copyright 2019-2021 the original author or authors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /dist/src/main/resources/platform-windows-amd64: -------------------------------------------------------------------------------- 1 | Copyright 2019-2021 the original author or authors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/invoker/src/it/invoke-hello/invoker.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2017 Decipher Technology Studios LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | invoker.goals=validate 16 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/mvnd-props/.mvn/mvnd.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | mvnd.maxHeapSize=130M -------------------------------------------------------------------------------- /native/src/main/resources/org/mvndaemon/mvnd/nativ/mvndnative.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | version=${project.version} 18 | -------------------------------------------------------------------------------- /integration-tests/src/test/resources/settings-template.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /dist/src/main/distro/mvn/conf/logging/java.util.logging.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/forked/mod1/src/main/java/org/mvndaemon/mvnd/test/forked/mod1/Greeting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.forked.mod1; 17 | 18 | public interface Greeting { 19 | 20 | public String greet(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/bootstrap-plugin/bootstrap/src/main/resources/org/reproducer/Model.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Red Hat, Inc. and/or its affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.reproducer; 18 | 19 | public class Model { 20 | 21 | public static final String hello = "REPLACETHIS"; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/api/src/main/java/org/mvndaemon/mvnd/test/multi/module/api/Greeting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.api; 17 | 18 | public interface Greeting { 19 | 20 | public String greet(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/api/src/main/java/org/mvndaemon/mvnd/test/multi/module/api/Greeting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.api; 17 | 18 | public interface Greeting { 19 | 20 | public String greet(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/forked/mod2/src/main/java/org/mvndaemon/mvnd/test/forked/mod2/Hi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.forked.mod2; 17 | 18 | public class Hi { 19 | 20 | public String greet() { 21 | return "Hi"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/extension/src/main/java/org/mvndaemon/mvnd/test/extension/with/api/extension/TheApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.extension.with.api.extension; 17 | 18 | 19 | public interface TheApi { 20 | void sayHello(); 21 | } -------------------------------------------------------------------------------- /integration-tests/src/test/projects/delete-repo/src/main/java/org/mvndaemon/mvnd/test/single/module/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.single.module; 17 | 18 | public class Hello { 19 | 20 | public String sayHello() { 21 | return "Hello"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/single-module/src/main/java/org/mvndaemon/mvnd/test/single/module/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.single.module; 17 | 18 | public class Hello { 19 | 20 | public String sayHello() { 21 | return "Hello"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | # Change maven code style 21 | a14a1eb80f53d9e3b5cbf89ac9f21ab094591fd9 22 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/concurrent-downloads/mod1/src/main/java/org/mvndaemon/mvnd/test/concurrent/downloads/mod1/Greeting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.concurrent.downloads.mod1; 17 | 18 | public interface Greeting { 19 | 20 | public String greet(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/exec-output/src/main/java/org/mvndaemon/mvnd/test/Greeting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test; 17 | 18 | public class Greeting { 19 | 20 | public static void main(String[] args) { 21 | System.out.println("Hello world!"); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/daemon-crash/hello/src/main/java/org/mvndaemon/mvnd/test/multi/module/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | public class Hello { 19 | 20 | public String greet() { 21 | return "Hello"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/exec-output/src/main/java/org/mvndaemon/mvnd/test/HelloWorld.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test; 17 | 18 | public class HelloWorld { 19 | 20 | public static void main(String[] args) { 21 | System.out.println("From test"); 22 | } 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/module-and-plugin/hello/src/main/java/org/mvndaemon/mvnd/test/multi/module/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | public class Hello { 19 | 20 | public String greet() { 21 | return "Hello"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/concurrent-downloads/mod2/src/main/java/org/mvndaemon/mvnd/test/concurrent/downloads/mod2/Hi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.concurrent.downloads.mod2; 17 | 18 | public class Hi { 19 | 20 | public String greet() { 21 | return "Hi"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/changes/new-module/src/main/java/org/mvndaemon/mvnd/test/upgrades/nw/module/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.nw.module; 17 | 18 | public class Hello { 19 | 20 | public String hi() { 21 | return "Hi"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/hello-0.0.1/src/main/java/org/mvndaemon/mvnd/test/upgrades/bom/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.bom.hello; 17 | 18 | public class Hello { 19 | 20 | public String sayHello() { 21 | return "Hello"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/hello-0.0.2-SNAPSHOT/src/main/java/org/mvndaemon/mvnd/test/upgrades/bom/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.bom.hello; 17 | 18 | public class Hello { 19 | 20 | public int sayWisdom() { 21 | return 42; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/parent/module/src/main/java/org/mvndaemon/mvnd/test/upgrades/bom/module/UseHello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.bom.module; 17 | 18 | public class UseHello { 19 | 20 | public void use() { 21 | System.out.println("Hello"); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extensions/.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | fr.jcgay.maven 22 | maven-profiler 23 | 3.0 24 | 25 | 26 | -------------------------------------------------------------------------------- /.github/ci-mimir-daemon.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | # Mimir Daemon properties 19 | 20 | # Disable JGroups; we don't want/use LAN cache sharing 21 | mimir.jgroups.enabled=false -------------------------------------------------------------------------------- /integration-tests/src/test/projects/invoker/src/it/invoke-hello/verify.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | import java.nio.file.Path; 17 | import java.nio.file.Files; 18 | 19 | Path basePath = basedir.toPath() 20 | Path helloPath = basePath.resolve('target/hello.txt') 21 | 22 | assert Files.exists(helloPath) 23 | 24 | assert Files.readString(helloPath).equals('Hello') 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/type-description/server/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | log4j.rootLogger=INFO, consoleAppender 18 | 19 | log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender 20 | log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout 21 | log4j.appender.consoleAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n 22 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/bootstrap-plugin/startup/src/main/java/org/reproducer/MainClass.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Red Hat, Inc. and/or its affiliates. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.reproducer; 18 | 19 | public class MainClass { 20 | 21 | public static void main(String[] args) { 22 | String helloWorld = org.reproducer.Model.hello; 23 | System.out.println(helloWorld); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/hi/src/main/java/org/mvndaemon/mvnd/test/multi/module/hi/Hi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hi; 17 | 18 | import org.mvndaemon.mvnd.test.multi.module.api.Greeting; 19 | 20 | public class Hi implements Greeting { 21 | 22 | public String greet() { 23 | return "Hi"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/hi/src/main/java/org/mvndaemon/mvnd/test/multi/module/hi/Hi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hi; 17 | 18 | import org.mvndaemon.mvnd.test.multi.module.api.Greeting; 19 | 20 | public class Hi implements Greeting { 21 | 22 | public String greet() { 23 | return "Hi"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | org.mvndaemon.mvnd.test.extension.with.api 22 | extension 23 | 0.0.1-SNAPSHOT 24 | 25 | 26 | -------------------------------------------------------------------------------- /client/src/main/resources/org/mvndaemon/mvnd/client/build.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | revision=${nisse.jgit.commit} 19 | version=${project.version} 20 | os.detected.name=${os.detected.name} 21 | os.detected.arch=${os.detected.arch} -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/hello/src/main/java/org/mvndaemon/mvnd/test/multi/module/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import org.mvndaemon.mvnd.test.multi.module.api.Greeting; 19 | 20 | public class Hello implements Greeting { 21 | 22 | public String greet() { 23 | return "Hello"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/hello/src/main/java/org/mvndaemon/mvnd/test/multi/module/hello/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import org.mvndaemon.mvnd.test.multi.module.api.Greeting; 19 | 20 | public class Hello implements Greeting { 21 | 22 | public String greet() { 23 | return "Hello"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | wrapperVersion=3.3.2 18 | distributionType=only-script 19 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/4.0.0-rc-5/apache-maven-4.0.0-rc-5-bin.zip 20 | -------------------------------------------------------------------------------- /.mvn/gradle-enterprise.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | https://ge.apache.org 8 | 9 | 10 | 11 | true 12 | 13 | 14 | 0.0.0.0 15 | 16 | ALWAYS 17 | true 18 | #{isFalse(env['GITHUB_ACTIONS'])} 19 | 20 | 21 | 22 | #{isFalse(env['GITHUB_ACTIONS'])} 23 | 24 | 25 | false 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.mvn/release-settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | maven-staging 7 | 8 | 9 | maven-staging-rc1 10 | https://repository.apache.org/content/repositories/maven-2247/ 11 | 12 | true 13 | 14 | 15 | false 16 | 17 | 18 | 19 | 20 | 21 | 22 | maven-staging 23 | 24 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/changes/module/src/main/java/org/mvndaemon/mvnd/test/upgrades/bom/module/UseHello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.bom.module; 17 | 18 | import org.mvndaemon.mvnd.test.upgrades.nw.module.Hello; 19 | 20 | public class UseHello { 21 | 22 | public void use() { 23 | System.out.println(new Hello().hi()); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/type-description/server/src/main/java/org/mvndaemon/mvnd/test/type/description/server/Main.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.type.description.server; 17 | 18 | import io.quarkus.runtime.Quarkus; 19 | 20 | /** 21 | * @author Ales Justin 22 | */ 23 | public class Main { 24 | public static void main(String[] args) { 25 | Quarkus.run(args); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/parent/module/src/main/java/org/mvndaemon/mvnd/test/upgrades/bom/module/UseHello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.upgrades.bom.module; 17 | 18 | import org.mvndaemon.mvnd.test.upgrades.bom.hello.Hello; 19 | 20 | public class UseHello { 21 | 22 | public void use() { 23 | System.out.println(new Hello().sayHello()); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /.github/ci-extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | eu.maveniverse.maven.mimir 21 | extension 22 | 0.7.0 23 | 24 | 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/parent-with-property/child/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 4.0.0 21 | 22 | 23 | org.mvndaemon.mvnd.test.parent-with-property 24 | parent 25 | ${revision} 26 | .. 27 | 28 | 29 | child 30 | 31 | -------------------------------------------------------------------------------- /client/src/main/resources/glibc/gcc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Licensed to the Apache Software Foundation (ASF) under one 4 | # or more contributor license agreements. See the NOTICE file 5 | # distributed with this work for additional information 6 | # regarding copyright ownership. The ASF licenses this file 7 | # to you under the Apache License, Version 2.0 (the 8 | # "License"); you may not use this file except in compliance 9 | # with the License. You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, 14 | # software distributed under the License is distributed on an 15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | # KIND, either express or implied. See the License for the 17 | # specific language governing permissions and limitations 18 | # under the License. 19 | 20 | set -euf 21 | 22 | base=$(dirname -- "$0") 23 | 24 | # fix glibc api version on the fly 25 | find . -name '*.o' -print0 | xargs -0rn 1 objcopy --redefine-syms="$base/glibc.redef" 26 | 27 | exec gcc "$@" 28 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | name: Stale 19 | 20 | on: 21 | schedule: 22 | - cron: '55 2 * * *' 23 | issue_comment: 24 | types: [ 'created' ] 25 | 26 | jobs: 27 | stale: 28 | uses: 'apache/maven-gh-actions-shared/.github/workflows/stale.yml@v4' 29 | -------------------------------------------------------------------------------- /.github/workflows/pr-automation.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | name: PR Automation 19 | on: 20 | pull_request_target: 21 | types: 22 | - closed 23 | 24 | jobs: 25 | pr-automation: 26 | name: PR Automation 27 | uses: apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml@v4 28 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/InvokerTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/invoker") 24 | class InvokerTest extends InvokerNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/ExtensionsTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/extensions") 24 | class ExtensionsTest extends ExtensionsNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MavenConfTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/maven-conf") 24 | class MavenConfTest extends MavenConfNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/DeleteRepoTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/delete-repo") 24 | class DeleteRepoTest extends DeleteRepoNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/InputStreamTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/input-stream") 24 | class InputStreamTest extends InputStreamNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/type-description/server/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | quarkus.datasource.db-kind=h2 18 | quarkus.datasource.jdbc.url=jdbc:h2:file:/tmp/h2/database.db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 19 | quarkus.datasource.jdbc.driver=org.h2.Driver 20 | quarkus.datasource.username=sa 21 | quarkus.datasource.password=sa 22 | quarkus.datasource.jdbc.max-size=10 23 | quarkus.hibernate-orm.database.generation=create-drop 24 | quarkus.hibernate-orm.log.sql=true 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/ThreadOptionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/multi-module") 24 | class ThreadOptionTest extends ThreadOptionNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/parent-with-property/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.parent-with-property 23 | parent 24 | ${revision} 25 | pom 26 | 27 | 28 | 1 29 | 30 | 31 | 32 | child 33 | 34 | 35 | -------------------------------------------------------------------------------- /logging/src/main/resources/META-INF/maven/slf4j-configuration.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | # key = Slf4j effective logger factory implementation 19 | # value = corresponding o.a.m.cli.logging.Slf4jConfiguration class 20 | org.mvndaemon.mvnd.logging.slf4j.MvndLoggerFactory=org.apache.maven.cling.logging.impl.MavenSimpleConfiguration 21 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/UpgradesInBomTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/upgrades-in-bom") 24 | class UpgradesInBomTest extends UpgradesInBomNativeIT {} 25 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/ProcessHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | public class ProcessHelper { 22 | 23 | public static void killChildrenProcesses() { 24 | ProcessHandle.current().descendants().forEach(ProcessHandle::destroy); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/ModuleAndPluginTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/module-and-plugin") 24 | class ModuleAndPluginTest extends ModuleAndPluginNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/NewManagedModuleTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/new-managed-module") 24 | class NewManagedModuleTest extends NewManagedModuleNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MavenConfIgnoreExtTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | @MvndTest(projectDir = "src/test/projects/maven-conf-ignore-ext") 24 | class MavenConfIgnoreExtTest extends MavenConfIgnoreExtNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/extension/src/main/resources/META-INF/maven/extension.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | org.mvndaemon.mvnd.test.extension.with.api.extension 22 | 23 | 24 | org.mvndaemon.mvnd.test.extension.with.api:extension 25 | 26 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/junit/ClientFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.junit; 20 | 21 | import org.mvndaemon.mvnd.client.Client; 22 | import org.mvndaemon.mvnd.client.DaemonParameters; 23 | 24 | public interface ClientFactory { 25 | Client newClient(DaemonParameters parameters); 26 | } 27 | -------------------------------------------------------------------------------- /native/src/test/java/org/mvndaemon/mvnd/nativ/MvndNativeLoaderTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.nativ; 20 | 21 | import org.junit.jupiter.api.Test; 22 | 23 | public class MvndNativeLoaderTest { 24 | 25 | @Test 26 | public void testLoadJansi() { 27 | MvndNativeLoader.initialize(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extensions/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.extensions 23 | extensions 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/CompletionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | import org.mvndaemon.mvnd.junit.MvndTestExtension; 23 | 24 | @MvndTest(projectDir = MvndTestExtension.TEMP_EXTERNAL) 25 | class CompletionTest extends CompletionNativeIT {} 26 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MavenConfIgnoreExtDefNativeIT.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndNativeTest; 22 | 23 | @MvndNativeTest(projectDir = "src/test/projects/maven-conf-ignore-ext-def") 24 | class MavenConfIgnoreExtDefNativeIT extends MavenConfNativeIT {} 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.maven-conf 23 | maven-conf 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/environment/prj1/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.environment 23 | environment-prj1 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/environment/prj2/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.environment 23 | environment-prj2 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/default-heap/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.max-heap 23 | max-heap-default-heap 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/jvm-config/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.max-heap 23 | max-heap-jvm-config 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/max-heap/mvnd-props/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.max-heap 23 | max-heap-jvm-config 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj1/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.specific-file 23 | specific-file-prj1 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/specific-file/prj2/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 4.0.0 22 | org.mvndaemon.mvnd.test.specific-file 23 | specific-file-prj2 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf-ignore-ext/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.maven-conf 23 | maven-conf-ignore-ext 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/maven-conf-ignore-ext-def/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.maven-conf 23 | maven-conf-ignore-ext-def 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | -------------------------------------------------------------------------------- /.asf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021-2024 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # see https://s.apache.org/asfyaml 18 | github: 19 | description: "Apache Maven Daemon" 20 | homepage: https://maven.apache.org/ 21 | labels: 22 | - java 23 | - build-management 24 | - apache-maven 25 | - maven 26 | protected_branches: 27 | master: { } 28 | pull_requests: 29 | del_branch_on_merge: true 30 | enabled_merge_buttons: 31 | squash: true 32 | merge: false 33 | rebase: true 34 | 35 | notifications: 36 | commits: commits@maven.apache.org 37 | issues: issues@maven.apache.org 38 | pullrequests: issues@maven.apache.org 39 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/VersionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | import org.mvndaemon.mvnd.junit.MvndTestExtension; 23 | 24 | @MvndTest(projectDir = MvndTestExtension.TEMP_EXTERNAL) 25 | class VersionTest extends VersionNativeIT { 26 | protected boolean isNative() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | # https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser 19 | 20 | blank_issues_enabled: false 21 | 22 | contact_links: 23 | 24 | - name: Project Mailing Lists 25 | url: https://maven.apache.org/mailing-lists.html 26 | about: Please ask a question or discuss here 27 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/attached-artifact-resolution/jdt/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 4.0.0 22 | 23 | 24 | org.example 25 | java 26 | 1.0-SNAPSHOT 27 | 28 | 29 | jdt 30 | 31 | 32 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/DaemonState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | /** 22 | * File origin 23 | * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/server/api/DaemonStateControl.java 24 | */ 25 | public enum DaemonState { 26 | Idle, 27 | Busy, 28 | Canceled, 29 | StopRequested, 30 | Stopped, 31 | Broken 32 | } 33 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/JavaVersion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | public class JavaVersion { 22 | 23 | private static float javaSpec = 0.0f; 24 | 25 | public static float getJavaSpec() { 26 | if (javaSpec <= 0.0f) { 27 | javaSpec = Float.parseFloat(System.getProperty("java.specification.version")); 28 | } 29 | return javaSpec; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/forked/mod1/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.forked 23 | forked 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | forked-mod1 29 | 30 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/forked/mod2/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.forked 23 | forked 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | forked-mod2 29 | 30 | -------------------------------------------------------------------------------- /daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.cache; 20 | 21 | /** 22 | * A factory for cache objects 23 | */ 24 | public interface CacheFactory { 25 | 26 | /** 27 | * @param the type of {@link Cache} keys 28 | * @param the type of {@link Cache} values 29 | * @return a new {@link Cache} 30 | */ 31 | Cache newCache(); 32 | } 33 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/bootstrap-plugin/bootstrap/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 21 | 4.0.0 22 | org.reproducer 23 | bootstrap 24 | 1.0.0-SNAPSHOT 25 | 26 | 27 | 28 | 11 29 | 11 30 | 31 | 32 | -------------------------------------------------------------------------------- /helper/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 4.0.0 22 | 23 | org.apache.maven.daemon 24 | mvnd 25 | 2.0.0-rc-4-SNAPSHOT 26 | 27 | 28 | mvnd-helper-agent 29 | 30 | jar 31 | Maven Daemon - Helper Agent 32 | 33 | 34 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MavenConfIgnoreExtDefTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.junit.jupiter.api.condition.DisabledOnOs; 22 | import org.junit.jupiter.api.condition.OS; 23 | import org.mvndaemon.mvnd.junit.MvndTest; 24 | 25 | @DisabledOnOs(OS.LINUX) 26 | @MvndTest(projectDir = "src/test/projects/maven-conf-ignore-ext-def") 27 | class MavenConfIgnoreExtDefTest extends MavenConfIgnoreExtDefNativeIT {} 28 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/api/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.multi-lookup 23 | multi-lookup 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | multi-lookup-api 29 | 30 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/api/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.multi-module 23 | multi-module 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | multi-module-api 29 | 30 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/dup-ga/hi1/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.dup-ga 23 | dup-ga 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | dup-ga-hi 29 | 1.0-SNAPSHOT 30 | 31 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/dup-ga/hi2/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.dup-ga 23 | dup-ga 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | dup-ga-hi 29 | 2.0-SNAPSHOT 30 | 31 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/AlpineLinuxTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.junit.jupiter.api.TestInstance; 22 | import org.testcontainers.junit.jupiter.Testcontainers; 23 | 24 | @TestInstance(TestInstance.Lifecycle.PER_CLASS) 25 | @Testcontainers(disabledWithoutDocker = true) 26 | class AlpineLinuxTest extends AlpineLinuxNativeIT { 27 | 28 | @Override 29 | protected boolean isNative() { 30 | return false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/changes/new-module/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.new-managed-module 23 | new-managed-module-parent 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | new-managed-module-new-module 29 | 30 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/plugin/src/main/java/org/mvndaemon/mvnd/test/extension/with/api/plugin/TheMojo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.mvndaemon.mvnd.test.extension.with.api.plugin; 18 | 19 | import org.apache.maven.plugin.AbstractMojo; 20 | import org.apache.maven.plugin.MojoExecutionException; 21 | import org.apache.maven.plugins.annotations.Mojo; 22 | 23 | import javax.inject.Inject; 24 | 25 | import org.mvndaemon.mvnd.test.extension.with.api.extension.TheApi; 26 | 27 | @Mojo( name = "mojo") 28 | public class TheMojo extends AbstractMojo { 29 | @Inject 30 | TheApi api; 31 | 32 | public void execute() throws MojoExecutionException { 33 | api.sayHello(); 34 | } 35 | } -------------------------------------------------------------------------------- /integration-tests/src/test/projects/delete-repo/src/test/java/org/mvndaemon/mvnd/test/single/module/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.single.module; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | @Test 28 | void hello() throws IOException { 29 | final String actual = new Hello().sayHello(); 30 | Files.write(Paths.get("target/hello.txt"), actual.getBytes(StandardCharsets.UTF_8)); 31 | Assertions.assertEquals("Hello", actual); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/single-module/src/test/java/org/mvndaemon/mvnd/test/single/module/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.single.module; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | @Test 28 | void hello() throws IOException { 29 | final String actual = new Hello().sayHello(); 30 | Files.write(Paths.get("target/hello.txt"), actual.getBytes(StandardCharsets.UTF_8)); 31 | Assertions.assertEquals("Hello", actual); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /client/src/test/java/org/mvndaemon/mvnd/client/DaemonConnectorTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.client; 20 | 21 | import org.junit.jupiter.api.Test; 22 | 23 | import static org.junit.jupiter.api.Assertions.assertEquals; 24 | import static org.junit.jupiter.api.Assertions.assertNotNull; 25 | 26 | public class DaemonConnectorTest { 27 | 28 | @Test 29 | public void newId() { 30 | String id = DaemonConnector.newId(); 31 | assertNotNull(id); 32 | assertEquals(8, id.length()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /client/src/main/java/org/mvndaemon/mvnd/client/Client.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.client; 20 | 21 | import java.util.Arrays; 22 | import java.util.List; 23 | 24 | import org.mvndaemon.mvnd.common.logging.ClientOutput; 25 | 26 | public interface Client { 27 | 28 | ExecutionResult execute(ClientOutput output, List args) throws InterruptedException; 29 | 30 | default ExecutionResult execute(ClientOutput output, String... args) throws InterruptedException { 31 | return execute(output, Arrays.asList(args)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /helper/src/main/java/org/mvndaemon/mvnd/pump/AgentHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.pump; 20 | 21 | import java.io.BufferedReader; 22 | import java.io.InputStream; 23 | import java.io.InputStreamReader; 24 | import java.io.PrintStream; 25 | 26 | public class AgentHelper { 27 | 28 | public static void pump(InputStream stream, PrintStream out) { 29 | new Thread(() -> new BufferedReader(new InputStreamReader(stream)) 30 | .lines() 31 | .forEach(out::println)) 32 | .start(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/SignalHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | public class SignalHelper { 22 | 23 | /** 24 | * Ignore signals to that stopping the mvnd client won't stop the daemon 25 | */ 26 | public static void ignoreStopSignals() throws Exception { 27 | sun.misc.Signal.handle(new sun.misc.Signal("INT"), sun.misc.SignalHandler.SIG_IGN); 28 | if (Os.current() != Os.WINDOWS) { 29 | sun.misc.Signal.handle(new sun.misc.Signal("TSTP"), sun.misc.SignalHandler.SIG_IGN); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /client/src/test/java/org/mvndaemon/mvnd/client/OsUtilsTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.client; 20 | 21 | import org.assertj.core.api.Assertions; 22 | import org.junit.jupiter.api.Test; 23 | import org.mvndaemon.mvnd.common.OsUtils; 24 | 25 | public class OsUtilsTest { 26 | 27 | /** 28 | * This test needs to be in the client module as long as the common module is on Java 8 29 | */ 30 | @Test 31 | void findProcessRssInKb() { 32 | long rss = OsUtils.findProcessRssInKb(ProcessHandle.current().pid()); 33 | Assertions.assertThat(rss).isGreaterThan(0); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/FEATURE.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | # https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema 19 | 20 | name: Feature request 21 | description: File a proposal for new feature, improvement 22 | labels: ["enhancement"] 23 | 24 | body: 25 | - type: markdown 26 | attributes: 27 | value: | 28 | Thanks for taking the time to fill out this new feature, improvement proposal. 29 | 30 | - type: textarea 31 | id: massage 32 | attributes: 33 | label: New feature, improvement proposal 34 | validations: 35 | required: true 36 | -------------------------------------------------------------------------------- /client/src/main/java-fallback/org/mvndaemon/mvnd/client/DefaultClient.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.client; 20 | 21 | import org.apache.maven.cling.MavenCling; 22 | import org.slf4j.Logger; 23 | import org.slf4j.LoggerFactory; 24 | 25 | public class DefaultClient { 26 | public static void main(String[] argv) throws Exception { 27 | final Logger LOGGER = LoggerFactory.getLogger(DefaultClient.class); 28 | LOGGER.warn("Found old JDK, fallback to the embedded maven!"); 29 | LOGGER.warn("Use JDK 17+ to run maven-mvnd client!"); 30 | 31 | MavenCling.main(argv); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/attached-artifact-resolution/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 4.0.0 22 | 23 | org.example 24 | java 25 | 1.0-SNAPSHOT 26 | pom 27 | 28 | 29 | jdt 30 | java-frontend 31 | 32 | 33 | 34 | UTF-8 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /logging/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 4.0.0 22 | 23 | org.apache.maven.daemon 24 | mvnd 25 | 2.0.0-rc-4-SNAPSHOT 26 | 27 | 28 | mvnd-logging 29 | 30 | jar 31 | Maven Daemon - Logging 32 | 33 | 34 | 35 | org.apache.maven 36 | maven-logging 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /dist/src/main/distro/bin/mvnd-daemon.conf: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | main is org.mvndaemon.mvnd.daemon.Server from plexus.core 18 | 19 | set maven.home default ${mvnd.home}/mvn 20 | set maven.conf default ${maven.home}/conf 21 | 22 | set java.util.logging.config.file default ${maven.conf}/logging/java.util.logging.properties 23 | 24 | [plexus.core] 25 | load ${maven.conf}/logging 26 | load ${maven.home}/lib/mvnd/*.jar 27 | optionally ${maven.home}/lib/ext/redisson/*.jar 28 | optionally ${maven.home}/lib/ext/hazelcast/*.jar 29 | optionally ${maven.home}/lib/ext/*.jar 30 | load ${maven.home}/lib/maven-*.jar 31 | load ${maven.home}/lib/*.jar 32 | -------------------------------------------------------------------------------- /dist/src/main/distro/bin/mvnd-client.conf: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | main is org.mvndaemon.mvnd.client.DefaultClient from plexus.core 18 | 19 | set maven.home default ${mvnd.home}/mvn 20 | set maven.conf default ${maven.home}/conf 21 | 22 | set java.util.logging.config.file default ${maven.conf}/logging/java.util.logging.properties 23 | 24 | [plexus.core] 25 | load ${maven.conf}/logging 26 | load ${maven.home}/lib/mvnd/*.jar 27 | optionally ${maven.home}/lib/ext/redisson/*.jar 28 | optionally ${maven.home}/lib/ext/hazelcast/*.jar 29 | optionally ${maven.home}/lib/ext/*.jar 30 | load ${maven.home}/lib/maven-*.jar 31 | load ${maven.home}/lib/*.jar 32 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/bootstrap-plugin/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 22 | 4.0.0 23 | 24 | org.example 25 | mvn-bootstrap-plugin-reproducer 26 | 1.0-SNAPSHOT 27 | 28 | pom 29 | 30 | 31 | 11 32 | 11 33 | 34 | 35 | 36 | bootstrap 37 | startup 38 | 39 | 40 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MaxHeapTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import org.mvndaemon.mvnd.junit.MvndTest; 22 | 23 | class MaxHeapTest extends MaxHeapNativeIT { 24 | 25 | @MvndTest(projectDir = "src/test/projects/max-heap/default-heap") 26 | static class DefaultConfig extends MaxHeapNativeIT.DefaultConfig {} 27 | 28 | @MvndTest(projectDir = "src/test/projects/max-heap/jvm-config") 29 | static class JvmConfig extends MaxHeapNativeIT.JvmConfig {} 30 | 31 | @MvndTest(projectDir = "src/test/projects/max-heap/mvnd-props") 32 | static class MvndProps extends MaxHeapNativeIT.MvndProps {} 33 | } 34 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/DaemonExpirationStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | /** 22 | * Expiration status for daemon expiration check results. 23 | * Note that order here is important, higher ordinal statuses 24 | * take precedent over lower ordinal statuses when aggregating 25 | * results. 26 | * 27 | * File origin: 28 | * https://github.com/gradle/gradle/blob/v6.5.1/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/server/expiry/DaemonExpirationStatus.java 29 | */ 30 | public enum DaemonExpirationStatus { 31 | DO_NOT_EXPIRE, 32 | QUIET_EXPIRE, 33 | GRACEFUL_EXPIRE, 34 | IMMEDIATE_EXPIRE; 35 | } 36 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.extension.with.api 23 | plugin-user 24 | 0.0.1-SNAPSHOT 25 | pom 26 | 27 | 28 | 29 | 30 | org.mvndaemon.mvnd.test.extension.with.api 31 | plugin 32 | 0.0.1-SNAPSHOT 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/type-description/server/src/main/java/org/mvndaemon/mvnd/test/type/description/server/domain/AbstractEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.type.description.server.domain; 17 | 18 | import jakarta.persistence.GeneratedValue; 19 | import jakarta.persistence.GenerationType; 20 | import jakarta.persistence.Id; 21 | import jakarta.persistence.MappedSuperclass; 22 | import java.io.Serializable; 23 | 24 | /** 25 | * @author Ales Justin 26 | */ 27 | @MappedSuperclass 28 | public abstract class AbstractEntity implements Serializable { 29 | private static final long serialVersionUID = 1L; 30 | 31 | @Id 32 | @GeneratedValue(strategy = GenerationType.IDENTITY) 33 | private Long id; 34 | 35 | public Long getId() { 36 | return id; 37 | } 38 | 39 | public void setId(Long id) { 40 | this.id = id; 41 | } 42 | } -------------------------------------------------------------------------------- /client/src/main/java/org/mvndaemon/mvnd/client/ExecutionResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.client; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * A result of a {@code mvnd} build. 25 | */ 26 | public interface ExecutionResult { 27 | 28 | boolean isSuccess(); 29 | 30 | ExecutionResult assertFailure(); 31 | 32 | ExecutionResult assertSuccess(); 33 | 34 | int getExitCode(); 35 | 36 | public static StringBuilder appendCommand(StringBuilder sb, List args) { 37 | sb.append("mvnd"); 38 | for (String arg : args) { 39 | sb.append(" \"").append(arg).append('"'); 40 | } 41 | return sb; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /daemon/src/main/java/org/mvndaemon/mvnd/daemon/Connection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.daemon; 20 | 21 | import java.util.function.Predicate; 22 | 23 | import org.mvndaemon.mvnd.common.Message; 24 | 25 | public interface Connection { 26 | 27 | static Connection getCurrent() { 28 | return Holder.CURRENT; 29 | } 30 | 31 | static void setCurrent(Connection connection) { 32 | Holder.CURRENT = connection; 33 | } 34 | 35 | void dispatch(Message message); 36 | 37 | T request(Message request, Class responseType, Predicate matcher); 38 | 39 | class Holder { 40 | static Connection CURRENT; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /dist/src/main/distro/mvn/bin/m2.conf: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | main is ${maven.mainClass} from plexus.core 18 | 19 | set maven.conf default ${maven.home}/conf 20 | 21 | set java.util.logging.config.file default ${maven.conf}/logging/java.util.logging.properties 22 | set logback.configurationFile default ${maven.conf}/logging/logback-mvn.xml 23 | set logback.configurationFile.fallback default ${maven.conf}/logging/logback.xml 24 | 25 | [plexus.core] 26 | load ${maven.conf}/logging 27 | optionally ${maven.home}/lib/ext/redisson/*.jar 28 | optionally ${maven.home}/lib/ext/hazelcast/*.jar 29 | optionally ${maven.home}/lib/ext/*.jar 30 | load ${maven.home}/lib/maven-*.jar 31 | load ${maven.home}/lib/*.jar 32 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | version: 2 18 | updates: 19 | 20 | - package-ecosystem: "maven" 21 | directory: "/" 22 | schedule: 23 | interval: "daily" 24 | 25 | - package-ecosystem: "github-actions" 26 | directory: "/" 27 | schedule: 28 | interval: "daily" 29 | 30 | - package-ecosystem: "maven" 31 | directory: "/" 32 | schedule: 33 | interval: "daily" 34 | target-branch: "mvnd-1.x" 35 | labels: 36 | - "backport" 37 | - "dependencies" 38 | 39 | - package-ecosystem: "github-actions" 40 | directory: "/" 41 | schedule: 42 | interval: "daily" 43 | target-branch: "mvnd-1.x" 44 | labels: 45 | - "backport" 46 | - "dependencies" 47 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/MavenConfIgnoreExtNativeIT.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | import org.mvndaemon.mvnd.junit.MvndNativeTest; 25 | 26 | @MvndNativeTest(projectDir = "src/test/projects/maven-conf-ignore-ext") 27 | class MavenConfIgnoreExtNativeIT extends MavenConfNativeIT { 28 | @Override 29 | protected List mvndParams(String expression) { 30 | ArrayList result = new ArrayList<>(super.mvndParams(expression)); 31 | result.add("-Dmvnd.coreExtensionsExclude=foo:bar,io.takari.maven:takari-smart-builder"); 32 | return result; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/daemon-crash/hello/src/test/java/org/mvndaemon/mvnd/test/multi/module/hello/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hello().greet(); 31 | Assertions.assertEquals("Hello", actual); 32 | 33 | /* Make sure the plugin was run before this test */ 34 | final String content = new String(Files.readAllBytes(Paths.get("target/hello.txt")), StandardCharsets.UTF_8); 35 | Assertions.assertTrue("Hi".equals(content) || "Hello".equals(content)); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /integration-tests/src/test/resources/maven.logger.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | maven.logger.defaultLogLevel=info 19 | maven.logger.showDateTime=false 20 | maven.logger.showThreadName=false 21 | maven.logger.showLogName=false 22 | maven.logger.logFile=System.out 23 | maven.logger.cacheOutputStream=true 24 | maven.logger.levelInBrackets=true 25 | maven.logger.log.Sisu=info 26 | maven.logger.warnLevelString=WARNING 27 | 28 | # MNG-6181: mvn -X also prints all debug logging from HttpClient 29 | # Be aware that the shaded packages are used 30 | # org.apache.http -> org.apache.maven.wagon.providers.http.httpclient 31 | maven.logger.log.org.apache.maven.wagon.providers.http.httpclient=off 32 | maven.logger.log.org.apache.maven.wagon.providers.http.httpclient.wire=off 33 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/module-and-plugin/hello/src/test/java/org/mvndaemon/mvnd/test/multi/module/hello/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hello().greet(); 31 | Assertions.assertEquals("Hello", actual); 32 | 33 | /* Make sure the plugin was run before this test */ 34 | final String content = new String(Files.readAllBytes(Paths.get("target/hello.txt")), StandardCharsets.UTF_8); 35 | Assertions.assertTrue("Hi".equals(content) || "Hello".equals(content)); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheRecord.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.cache; 20 | 21 | import java.nio.file.Path; 22 | import java.util.stream.Stream; 23 | 24 | /** 25 | * Data stored in a {@link Cache} depending on the state of a collection of files. 26 | */ 27 | public interface CacheRecord { 28 | 29 | /** 30 | * @return a {@link Stream} of file (not directory) {@link Path}s whose modification or deletion causes invalidation 31 | * of this {@link CacheRecord}. 32 | */ 33 | Stream getDependencyPaths(); 34 | 35 | /** 36 | * Callback called by the cache when this {@link CacheRecord} is removed from the cache. 37 | */ 38 | void invalidate(); 39 | } 40 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/logging/ClientOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common.logging; 20 | 21 | import java.util.List; 22 | import java.util.function.Consumer; 23 | 24 | import org.mvndaemon.mvnd.common.Message; 25 | 26 | /** 27 | * A sink for various kinds of events sent by the daemon. 28 | */ 29 | public interface ClientOutput extends AutoCloseable { 30 | 31 | void setDaemonId(String daemonId); 32 | 33 | void setDaemonDispatch(Consumer sink); 34 | 35 | void setDaemonReceive(Consumer sink); 36 | 37 | void accept(Message message); 38 | 39 | void accept(List messages); 40 | 41 | void describeTerminal(); 42 | 43 | int getTerminalWidth(); 44 | } 45 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/BufferCaster.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | import java.nio.Buffer; 22 | 23 | /** 24 | * File origin: 25 | * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/base-services/src/main/java/org/gradle/internal/io/BufferCaster.java 26 | */ 27 | public class BufferCaster { 28 | /** 29 | * Without this cast, when the code compiled by Java 9+ is executed on Java 8, it will throw 30 | * java.lang.NoSuchMethodError: Method flip()Ljava/nio/ByteBuffer; does not exist in class java.nio.ByteBuffer 31 | */ 32 | @SuppressWarnings("RedundantCast") 33 | public static Buffer cast(T byteBuffer) { 34 | return (Buffer) byteBuffer; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/attached-artifact-resolution/java-frontend/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 4.0.0 22 | 23 | 24 | org.example 25 | java 26 | 1.0-SNAPSHOT 27 | 28 | 29 | java-frontend 30 | 31 | 32 | 33 | ${project.groupId} 34 | jdt 35 | ${project.version} 36 | shaded 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /logging/src/main/java/org/mvndaemon/mvnd/logging/slf4j/MvndLoggerFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.logging.slf4j; 20 | 21 | import org.apache.maven.slf4j.MavenLoggerFactory; 22 | import org.slf4j.Logger; 23 | 24 | /** 25 | * LogFactory for Maven which can create a simple logger or one which, if set, fails the build on a severity threshold. 26 | */ 27 | public class MvndLoggerFactory extends MavenLoggerFactory { 28 | 29 | public MvndLoggerFactory() {} 30 | 31 | protected Logger getNewLoggingInstance(String name) { 32 | if (name.startsWith("org.mvndaemon.mvnd.daemon")) { 33 | return new MvndDaemonLogger(name); 34 | } else { 35 | return super.getNewLoggingInstance(name); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/daemon-crash/plugin/src/main/java/org/mvndaemon/mvnd/test/module/plugin/mojo/HelloMojo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.module.plugin.mojo; 17 | 18 | import java.io.File; 19 | import java.io.IOException; 20 | import java.nio.charset.StandardCharsets; 21 | import java.nio.file.Files; 22 | import java.nio.file.Path; 23 | 24 | import org.apache.maven.plugin.AbstractMojo; 25 | import org.apache.maven.plugin.MojoExecutionException; 26 | import org.apache.maven.plugin.MojoFailureException; 27 | import org.apache.maven.plugins.annotations.Mojo; 28 | import org.apache.maven.plugins.annotations.Parameter; 29 | 30 | /** 31 | */ 32 | @Mojo(name = "hello", requiresProject = true) 33 | public class HelloMojo extends AbstractMojo { 34 | 35 | @Parameter 36 | File file; 37 | 38 | @Override 39 | public void execute() throws MojoExecutionException, MojoFailureException { 40 | System.exit(-1); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /daemon/src/test/java/org/mvndaemon/mvnd/daemon/DaemonMemoryStatusTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.daemon; 20 | 21 | import java.util.concurrent.Executors; 22 | import java.util.concurrent.ScheduledExecutorService; 23 | 24 | import org.junit.jupiter.api.Test; 25 | 26 | import static org.junit.jupiter.api.Assertions.assertNotNull; 27 | 28 | public class DaemonMemoryStatusTest { 29 | 30 | @Test 31 | void testStrategy() { 32 | ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 33 | try { 34 | DaemonMemoryStatus status = new DaemonMemoryStatus(executor); 35 | assertNotNull(status.strategy); 36 | } finally { 37 | executor.shutdownNow(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /native/src/main/java/org/mvndaemon/mvnd/nativ/CLibrary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.nativ; 20 | 21 | /** 22 | * Interface to access some low level POSIX functions, loaded by 23 | * HawtJNI Runtime 24 | * as jansi library. 25 | * 26 | * @author Hiram Chirino 27 | * @see MvndNativeLoader 28 | */ 29 | @SuppressWarnings("unused") 30 | public class CLibrary { 31 | 32 | static { 33 | MvndNativeLoader.initialize(); 34 | } 35 | 36 | public static native int setenv(String name, String value); 37 | 38 | public static native int chdir(String path); 39 | 40 | public static native int getOsxMemoryInfo(long[] totalAndAvailMem); 41 | } 42 | -------------------------------------------------------------------------------- /daemon/src/main/java/org/apache/maven/cli/DaemonCli.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.apache.maven.cli; 20 | 21 | import java.io.InputStream; 22 | import java.io.OutputStream; 23 | import java.util.List; 24 | import java.util.Map; 25 | 26 | import org.apache.maven.logging.BuildEventListener; 27 | 28 | /** 29 | * Simple interface to bridge maven 3.9.x and 4.0.x CLI 30 | */ 31 | public interface DaemonCli extends AutoCloseable { 32 | int main( 33 | List args, 34 | String workingDir, 35 | String projectDir, 36 | Map env, 37 | BuildEventListener buildEventListener, 38 | InputStream in, 39 | OutputStream out, 40 | OutputStream err) 41 | throws Exception; 42 | } 43 | -------------------------------------------------------------------------------- /RELEASING.adoc: -------------------------------------------------------------------------------- 1 | = How to release `mvnd` 2 | 3 | * Run the https://raw.githubusercontent.com/apache/maven-mvnd/master/build/release-build.sh[release script] which will update the versions, the native binaries and will tag the new git commit. This new tag will trigger the https://raw.githubusercontent.com/apache/maven-mvnd/master/.github/workflows/release.yaml[release workflow] on this newly created tag. 4 | [source,shell] 5 | ---- 6 | ./build/release-build.sh 7 | ---- 8 | 9 | Warning for Fedora users: The RedHat `podman` is usually preinstalled and happily coexisting with `Docker`. Make sure Docker is being used, usually by setting `OCI_EXE=docker` env variable. 10 | 11 | * Once the workflow completes, run the https://raw.githubusercontent.com/apache/maven-mvnd/master/build/release-candidate.sh[release-candidate script] which will download the built assemblies, compute the checksums and signatures, commit them to the https://dist.apache.org/repos/dist/dev/maven/mvnd/[dev distribution repository] 12 | https://github.com/apache/maven-mvnd/releases[releases] and also upload them as assets to the staging area for the github draft release. 13 | [source,shell] 14 | ---- 15 | ./build/release-candidate.sh 16 | ---- 17 | You can now call a vote on the mailto:dev@maven.apache.org[dev mailing list] pointing to that release candidate. 18 | 19 | * Once the vote passes, publish the release using the following command: 20 | [source,shell] 21 | ---- 22 | ./build/release-publish.sh 23 | ---- 24 | WARNING: *TODO*: document the publication process (move to the final svn area, homebrew, sdkman, choco updates...) 25 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/AttachedArtifactResolutionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import javax.inject.Inject; 22 | 23 | import org.junit.jupiter.api.Test; 24 | import org.mvndaemon.mvnd.assertj.TestClientOutput; 25 | import org.mvndaemon.mvnd.client.Client; 26 | import org.mvndaemon.mvnd.junit.MvndTest; 27 | 28 | @MvndTest(projectDir = "src/test/projects/attached-artifact-resolution") 29 | class AttachedArtifactResolutionTest { 30 | 31 | @Inject 32 | Client client; 33 | 34 | @Test 35 | void cleanCompile() throws Exception { 36 | final TestClientOutput output = new TestClientOutput(); 37 | client.execute(output, "clean", "compile", "-e", "-Dmvnd.log.level=DEBUG") 38 | .assertSuccess(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/extension-with-api/extension/src/main/java/org/mvndaemon/mvnd/test/extension/with/api/extension/TheImpl.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.extension.with.api.extension; 17 | 18 | import org.apache.maven.eventspy.EventSpy; 19 | import org.apache.maven.eventspy.AbstractEventSpy; 20 | import javax.inject.Named; 21 | import javax.inject.Singleton; 22 | import org.eclipse.sisu.Typed; 23 | 24 | @Named 25 | @Typed({EventSpy.class, TheApi.class}) 26 | @Singleton 27 | public class TheImpl extends AbstractEventSpy implements TheApi { 28 | private boolean init; 29 | 30 | @Override 31 | public void init(Context context) throws Exception { 32 | System.out.println("Api extension is initialized"); 33 | init = true; 34 | } 35 | 36 | @Override 37 | public void sayHello() { 38 | if (init) { 39 | System.out.println("Hello World!"); 40 | } else { 41 | throw new IllegalStateException("Not initialized"); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/BUG.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | # https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema 19 | 20 | name: Bug Report 21 | description: File a bug report 22 | labels: ["bug"] 23 | 24 | body: 25 | - type: markdown 26 | attributes: 27 | value: | 28 | Thanks for taking the time to fill out this bug report. 29 | 30 | Simple fixes in single PRs do not require issues. 31 | 32 | **Do you use the latest project version?** 33 | 34 | - type: input 35 | id: version 36 | attributes: 37 | label: Affected version 38 | validations: 39 | required: true 40 | 41 | - type: textarea 42 | id: massage 43 | attributes: 44 | label: Bug description 45 | validations: 46 | required: true 47 | 48 | 49 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/junit/MvndTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.junit; 20 | 21 | import java.lang.annotation.ElementType; 22 | import java.lang.annotation.Retention; 23 | import java.lang.annotation.RetentionPolicy; 24 | import java.lang.annotation.Target; 25 | 26 | import org.junit.jupiter.api.extension.ExtendWith; 27 | 28 | @ExtendWith(MvndTestExtension.class) 29 | @Retention(RetentionPolicy.RUNTIME) 30 | @Target(ElementType.TYPE) 31 | public @interface MvndTest { 32 | /** 33 | * The path to the root directory of a test project relative to the current maven module directory. E.g. 34 | * @MvndTest(projectDir = "src/test/projects/my-project") 35 | */ 36 | String projectDir(); 37 | 38 | String keepAlive() default ""; 39 | 40 | String maxLostKeepAlive() default ""; 41 | } 42 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/DupGATest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import javax.inject.Inject; 22 | 23 | import java.io.IOException; 24 | 25 | import org.junit.jupiter.api.Test; 26 | import org.mvndaemon.mvnd.assertj.TestClientOutput; 27 | import org.mvndaemon.mvnd.client.Client; 28 | import org.mvndaemon.mvnd.client.DaemonParameters; 29 | import org.mvndaemon.mvnd.junit.MvndTest; 30 | 31 | @MvndTest(projectDir = "src/test/projects/dup-ga") 32 | class DupGATest { 33 | 34 | @Inject 35 | Client client; 36 | 37 | @Inject 38 | DaemonParameters parameters; 39 | 40 | @Test 41 | void cleanInstall() throws IOException, InterruptedException { 42 | final TestClientOutput output = new TestClientOutput(); 43 | client.execute(output, "clean", "install", "-e").assertSuccess(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /common/src/main/java/org/mvndaemon/mvnd/common/SocketHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.common; 20 | 21 | import java.io.IOException; 22 | import java.net.SocketAddress; 23 | import java.net.StandardProtocolFamily; 24 | import java.net.UnixDomainSocketAddress; 25 | import java.nio.channels.ServerSocketChannel; 26 | import java.nio.channels.SocketChannel; 27 | 28 | public class SocketHelper { 29 | 30 | public static SocketChannel openUnixSocket() throws IOException { 31 | return SocketChannel.open(StandardProtocolFamily.UNIX); 32 | } 33 | 34 | public static ServerSocketChannel openUnixServerSocket() throws IOException { 35 | return ServerSocketChannel.open(StandardProtocolFamily.UNIX).bind(null, 0); 36 | } 37 | 38 | public static SocketAddress unixSocketAddressOf(String s) { 39 | return UnixDomainSocketAddress.of(s); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /daemon/src/main/java/org/apache/maven/cli/DaemonMessageBuilderFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.apache.maven.cli; 20 | 21 | import org.apache.maven.api.annotations.Experimental; 22 | import org.apache.maven.api.di.Named; 23 | import org.apache.maven.api.di.Priority; 24 | import org.apache.maven.api.di.Singleton; 25 | import org.apache.maven.jline.JLineMessageBuilderFactory; 26 | import org.mvndaemon.mvnd.common.Environment; 27 | 28 | @Named 29 | @Singleton 30 | @Priority(20) 31 | @Experimental 32 | public class DaemonMessageBuilderFactory extends JLineMessageBuilderFactory { 33 | 34 | @Override 35 | public int getTerminalWidth() { 36 | int terminalWidth; 37 | try { 38 | terminalWidth = Environment.MVND_TERMINAL_WIDTH.asInt(); 39 | } catch (Exception e) { 40 | terminalWidth = 80; 41 | } 42 | return terminalWidth; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /integration-tests/src/test/java/org/mvndaemon/mvnd/it/TypeDescriptionTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.it; 20 | 21 | import javax.inject.Inject; 22 | 23 | import java.io.IOException; 24 | 25 | import org.junit.jupiter.api.Test; 26 | import org.mvndaemon.mvnd.assertj.TestClientOutput; 27 | import org.mvndaemon.mvnd.client.Client; 28 | import org.mvndaemon.mvnd.client.DaemonParameters; 29 | import org.mvndaemon.mvnd.junit.MvndTest; 30 | 31 | @MvndTest(projectDir = "src/test/projects/type-description") 32 | class TypeDescriptionTest { 33 | 34 | @Inject 35 | Client client; 36 | 37 | @Inject 38 | DaemonParameters parameters; 39 | 40 | @Test 41 | void cleanInstall() throws IOException, InterruptedException { 42 | final TestClientOutput output = new TestClientOutput(); 43 | client.execute(output, "clean", "install", "-e").assertSuccess(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/upgrades-in-bom/parent/bom/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.upgrades-in-bom 23 | upgrades-in-bom-parent 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | upgrades-in-bom-bom 29 | pom 30 | 31 | 32 | 33 | 34 | org.mvndaemon.mvnd.test.upgrades-in-bom 35 | upgrades-in-bom-hello 36 | ${hello.version} 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/hi/src/test/java/org/mvndaemon/mvnd/test/multi/module/hi/HiTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hi; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HiTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hi().greet(); 31 | Files.write(Paths.get("target/hi.txt"), actual.getBytes(StandardCharsets.UTF_8)); 32 | Assertions.assertEquals("Hi", actual); 33 | 34 | /* Have some random delay so that hi and hello may finish in random order */ 35 | if (Math.random() >= 0.5) { 36 | try { 37 | System.out.println("HiTest sleeps for 500 ms"); 38 | Thread.sleep(500); 39 | } catch (InterruptedException e) { 40 | Thread.currentThread().interrupt(); 41 | } 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/hi/src/test/java/org/mvndaemon/mvnd/test/multi/module/hi/HiTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hi; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HiTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hi().greet(); 31 | Files.write(Paths.get("target/hi.txt"), actual.getBytes(StandardCharsets.UTF_8)); 32 | Assertions.assertEquals("Hi", actual); 33 | 34 | /* Have some random delay so that hi and hello may finish in random order */ 35 | if (Math.random() >= 0.5) { 36 | try { 37 | System.out.println("HiTest sleeps for 500 ms"); 38 | Thread.sleep(500); 39 | } catch (InterruptedException e) { 40 | Thread.currentThread().interrupt(); 41 | } 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/parent/bom/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.new-managed-module 23 | new-managed-module-parent 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | new-managed-module-bom 29 | pom 30 | 31 | 32 | 33 | 34 | org.mvndaemon.mvnd.test.new-managed-module 35 | new-managed-module-module 36 | ${project.version} 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /client/src/main/resources/glibc/glibc.redef: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | __libc_start_main __dynamic_libc_start_main 18 | clock_gettime clock_gettime@GLIBC_2.2.5 19 | dlopen dlopen@GLIBC_2.2.5 20 | dlsym dlsym@GLIBC_2.2.5 21 | memcpy memcpy@GLIBC_2.2.5 22 | posix_spawn posix_spawn@GLIBC_2.2.5 23 | pthread_attr_getguardsize pthread_attr_getguardsize@GLIBC_2.2.5 24 | pthread_attr_getstack pthread_attr_getstack@GLIBC_2.2.5 25 | pthread_attr_setstacksize pthread_attr_setstacksize@GLIBC_2.2.5 26 | pthread_condattr_setclock pthread_condattr_setclock@GLIBC_2.3.3 27 | pthread_create pthread_create@GLIBC_2.2.5 28 | pthread_getattr_np pthread_getattr_np@GLIBC_2.2.5 29 | pthread_join pthread_join@GLIBC_2.2.5 30 | pthread_kill pthread_kill@GLIBC_2.2.5 31 | pthread_mutex_trylock pthread_mutex_trylock@GLIBC_2.2.5 32 | pthread_setname_np pthread_setname_np@GLIBC_2.12 33 | sem_destroy sem_destroy@GLIBC_2.2.5 34 | sem_init sem_init@GLIBC_2.2.5 35 | sem_post sem_post@GLIBC_2.2.5 36 | sem_wait sem_wait@GLIBC_2.2.5 37 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-lookup/hello/src/test/java/org/mvndaemon/mvnd/test/multi/module/hello/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hello().greet(); 31 | Files.write(Paths.get("target/hello.txt"), actual.getBytes(StandardCharsets.UTF_8)); 32 | Assertions.assertEquals("Hello", actual); 33 | 34 | /* Have some random delay so that hi and hello may finish in random order */ 35 | if (Math.random() >= 0.5) { 36 | try { 37 | System.out.println("HelloTest sleeps for 500 ms"); 38 | Thread.sleep(500); 39 | } catch (InterruptedException e) { 40 | Thread.currentThread().interrupt(); 41 | } 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/multi-module/hello/src/test/java/org/mvndaemon/mvnd/test/multi/module/hello/HelloTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.mvndaemon.mvnd.test.multi.module.hello; 17 | 18 | import java.io.IOException; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.nio.file.Paths; 22 | 23 | import org.junit.jupiter.api.Assertions; 24 | import org.junit.jupiter.api.Test; 25 | 26 | public class HelloTest { 27 | 28 | @Test 29 | void greet() throws IOException { 30 | final String actual = new Hello().greet(); 31 | Files.write(Paths.get("target/hello.txt"), actual.getBytes(StandardCharsets.UTF_8)); 32 | Assertions.assertEquals("Hello", actual); 33 | 34 | /* Have some random delay so that hi and hello may finish in random order */ 35 | if (Math.random() >= 0.5) { 36 | try { 37 | System.out.println("HelloTest sleeps for 500 ms"); 38 | Thread.sleep(500); 39 | } catch (InterruptedException e) { 40 | Thread.currentThread().interrupt(); 41 | } 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /daemon/src/test/java/org/mvndaemon/mvnd/daemon/ClientDispatcherTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | package org.mvndaemon.mvnd.daemon; 20 | 21 | import org.junit.jupiter.api.Assertions; 22 | import org.junit.jupiter.api.Test; 23 | 24 | public class ClientDispatcherTest { 25 | @Test 26 | void trimTrailingEols() { 27 | Assertions.assertEquals(null, ClientDispatcher.trimTrailingEols(null)); 28 | Assertions.assertEquals("foo", ClientDispatcher.trimTrailingEols("foo")); 29 | Assertions.assertEquals("foo\nbar", ClientDispatcher.trimTrailingEols("foo\nbar")); 30 | Assertions.assertEquals("foo\nbar", ClientDispatcher.trimTrailingEols("foo\nbar\n")); 31 | Assertions.assertEquals("foo\nbar", ClientDispatcher.trimTrailingEols("foo\nbar\r\n")); 32 | Assertions.assertEquals("foo\nbar", ClientDispatcher.trimTrailingEols("foo\nbar\n\r\n")); 33 | Assertions.assertEquals("", ClientDispatcher.trimTrailingEols("\n")); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /integration-tests/src/test/projects/new-managed-module/parent/module/pom.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 4.0.0 21 | 22 | org.mvndaemon.mvnd.test.new-managed-module 23 | new-managed-module-parent 24 | 0.0.1-SNAPSHOT 25 | ../pom.xml 26 | 27 | 28 | new-managed-module-module 29 | 30 | 31 | 32 | 33 | org.mvndaemon.mvnd.test.new-managed-module 34 | new-managed-module-bom 35 | 0.0.1-SNAPSHOT 36 | pom 37 | import 38 | 39 | 40 | 41 | 42 | --------------------------------------------------------------------------------