com-lihaoyi / mill

Mill is a fast JVM build tool that supports Java and Scala. 2-3x faster than Gradle and 5-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
https://mill-build.org/
MIT License
2.04k stars 331 forks source link

Add hello-world and todo-mvc Quarkus examples (500USD bounty) #3549

Open lihaoyi opened 1 week ago

lihaoyi commented 1 week ago

From the maintainer Li Haoyi: I'm putting a 500USD bounty on this issue, payable by bank transfer on a merged PR implementing this.


Mill's example test suite has examples for hello-world and todo-mvc projects using in Java using Spring-Boot and Micronaut built using Mill (https://github.com/com-lihaoyi/mill/tree/main/example/javalib/web). They're not super fleshed out, but they exist.

We should add similar hello-world/todo-mvc examples for the Quarkus web framework, which according to the IntelliJ dev survey is relatively popular (between Spring-Boot and Micronaut https://www.jetbrains.com/lp/devecosystem-2023/java/)

lolgab commented 1 week ago

I'm giving a shot to this.

lolgab commented 1 week ago

quarkus, in its maven and gradle plugins, does some code generation which seems to be necessary to create the main method to run applications. I'm going to create a contrib module to mimic what we need from the Maven plugin. Another missing thing which would be nice to have, is support for pom artifacts to centralize the version management for a framework. In quarkus you add:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-bom</artifactId>
        <version>${quarkus.platform.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

And then you can add dependencies without setting the version, which will be automatically derived from the pom in quarkus-bom. I think this could be a nice addition to mill (maybe we could have dependencies like ivy"groupid:artifactid" without version, and derive the version from the pom artifacts. But I'm not going to work on this in the scope of quarkus.

lefou commented 1 week ago

The import-scope Maven dependencies are called BOM - Bill of Material. There are open requests for it in Mill and coursier:

I think @alexarchambault will work on it in the next months (https://github.com/com-lihaoyi/mill/discussions/3496).

llvee commented 6 days ago

@lolgab Did you complete this? If not maybe I will give this a shot in 24 hours from now.

lolgab commented 5 days ago

I haven't completed it yet.

llvee commented 5 days ago

@lolgab Would you like some help with it? Have you made a lot of progress?

omarsoufiane commented 3 days ago

hello @lihaoyi, I'm the founder of Bountyhub, a new platform dedicated exclusively to managing bounties on GitHub issues. Our platform is designed to provide greater transparency between bounty creators and solvers, ensuring that both sides have clear visibility throughout the process. people who use your projects can also create bounties on your repositories.

we would be very happy if you install our github app and add this badge to your readme: Bounties on BountyHub it will redirect contributors to the bounties created for this repository (try it by clicking on the badge above).

Looking forward to hearing your thoughts.