Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lefou/mill-vaadin
WIP mill plugin to support Vaadin projects
https://github.com/lefou/mill-vaadin
mill mill-module mill-plugin scala vaadin
Last synced: 24 days ago
JSON representation
WIP mill plugin to support Vaadin projects
- Host: GitHub
- URL: https://github.com/lefou/mill-vaadin
- Owner: lefou
- License: apache-2.0
- Created: 2021-01-19T08:47:02.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-06-25T21:36:29.000Z (5 months ago)
- Last Synced: 2024-06-25T22:52:54.195Z (5 months ago)
- Topics: mill, mill-module, mill-plugin, scala, vaadin
- Language: Scala
- Homepage:
- Size: 1.8 MB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 16
-
Metadata Files:
- Readme: Readme.adoc
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
= Plugin to Build Vaadin Application with the Mill Build Tool
:version: 0.0.4This is an experimental project to build Vaadin Applications with the https://github.com/com-lihaoyi/mill[Mill Build Tool].
== Early stage
In this early stage we just try to build a Vaadin Application _somehow_.
That means, we don't follow design concepts typically used in Mill, but instead re-use some shared Vaadin Build Tooling (also used by latest Maven and Gradle plugins) and also use the same directory layout. This means, _we can't use Mills efficient up-to-date checking and caching capabilities_.The reason for this is easy: Vaadin used various tools and also often changes these tools. Some of these tools are simple not designed for being used in isolation (e.g. node/npm/pnpm), and other still have some hardcoded path.
Once we are able to build Vaadin applications in a robust way, I will try to move more and more parts into well-designed and isolated targets. This will be most likely a laborious and incremental path. Any contribution are very welcome!
== Next steps
=== Separate `development` builds from `production` builds
The idea is to have two separated Mill modules, e.g. a `prod` submodule.
As `development` builds will closely work based on node.js, we will make these the default (and only) mode.
Production builds will be slower and don't need to watch their sources for changes, so we can copy all relevant files to a dedicated location (`prod` sub-module), where we run the build in production mode.
=== Select Vaadin version
As Vaadin build plugins are highly coupled to their release version, we need to make the version configurable. This is already prepared in the worker, but currently the used version is fixed.
== Download
Once, released, mill-vaadin will be available from Maven Central.
== Usage
.`build.sc`
[source,scala,subs="attributes,verbatim"]
----
import $ivy.`de.tototec::de.tobiasroeser.mill.vaadin::{version}`import de.tobiasroeser.mill.vaadin.VaadinModule
object foo extends JavaModule with VaadinModule
----== Configuration / Documentation
To stay compatible with Gradle and Maven, our Vaadin project should have the same `src/main/{java,resources}`-layout. For convenience, you can use `mill.scalalib.MavenModule` instead of (or in addition too) `mill.scalalib.JavaModule` (or for Scala: `mill.scalalib.SbtModule` for `mill.scalalib.ScalaModule`), which already used this layout.
To
== License
This project is published under the Apache License, Version 2.0.
== Supporters
The development of this plugin was initiated and sponsored by https://iba-cg.de/[iba Consulting Gesellschaft mbH & Co KG].
== Changelog
=== mill-vaadin 0.0.4 - 2023-06-12
* Added support for Mill API 0.11
* Update Vaadin Flow tooling to 23.3.12
* Various internal version bumps=== mill-vaadin 0.0.3 - 2023-03-08
* Added support for Mill 0.11.0-M4
* Updated Vaadin tooling to 23.3.4=== mill-vaadin 0.0.2 - 2022-09-29
* Made use of `pnpm` configurable
=== mill-vaadin 0.0.1 - 2022-09-21
Early development stage.
We just try to build a Vaadin Application _somehow_.
That means, we don't follow design concepts typically used in Mill, but instead re-use some shared Vaadin Build Tooling (also used by latest Maven and Gradle plugins) and also use the same directory layout.
This means, _we can't use Mills efficient up-to-date checking and caching capabilities_.