typelead / eta

The Eta Programming Language, a dialect of Haskell on the JVM
https://eta-lang.org
BSD 3-Clause "New" or "Revised" License
2.61k stars 145 forks source link

Maven plugin for Eta #571

Open rahulmutt opened 7 years ago

rahulmutt commented 7 years ago

This issue is there so that people can subscribe to it and get updates on the progress of the Maven plugin. If Maven support is a huge blocker for you from using Eta, please like this thread and with enough likes we'll add this issue at the milestones.

joshsh commented 6 years ago

Is there any more information on the Maven plugin? Is the idea that the Eta compiler will be bundled in the plugin, making Eta "just another JVM language" that can be used in any Maven project? Because that would be a great thing; it seems it would greatly reduce the barrier to entry if developers could build an Eta project without separately downloading the Etlas binary.

rahulmutt commented 6 years ago

Yes, that will be the idea. I'm not sure if you've checked out the Gradle plugin yet, but that's exactly how it works. The configuration lets you specify the version of Etlas & Eta you want to use and the plugin will know how to download the appropriate binaries for your platform with no other setup required from your side.

We plan to do something similar for Maven, and allowing you to only touch the pom.xml to configure your Eta dependencies, etc. without worry about the custom .cabal file syntax.

In the future, etlas will merely be a backend tool for other build tools like Maven, Gradle, SBT, etc. because it doesn't make sense to re-implement all the functionality of the existing plugin ecosystems. Once etlas can be compiled completely with Eta itself, it'll be included as a direct dependency to all the Eta plugins and avoid the overhead of a process invocation.

joshsh commented 6 years ago

That's great. Still +1 for Maven support, but I'm glad to learn of the Gradle plugin.

politrons commented 6 years ago

What is the current state of the Maven Plugin?

joshsh commented 6 years ago

Btw. I for one no longer need a Maven plugin, although I am hopeful that the Gradle plugin will become a little more automated w.r.t. reading dependencies from *.cabal.

rahulmutt commented 6 years ago

@politrons Ever since we released the Gradle plugin, the number of people requesting the Maven plugin has sharply decreased so we haven't had the motivation to work on it. Do you have a particular use case or situation you can explain in which you can't use Gradle?

politrons commented 6 years ago

Well my company does not use and allow Gradle or SBT for now 😆

Enviado desde mi iPhone

El 13 nov 2018, a las 21:54, Rahul Muttineni notifications@github.com escribió:

@politrons Ever since we released the Gradle plugin, the number of people requesting the Maven plugin has sharply decreased so we haven't had the motivation to work on it. Do you have a particular use case or situation you can explain in which you can't use Gradle?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

rahulmutt commented 6 years ago

That's a valid reason :) Unfortunately, we don't have the bandwidth to work on it right now.

If you are willing to start work on the Maven plugin, happy to assist in whatever way I can. I have tried as a weekend project to get a Maven plugin working 2-3 times now so I do have a basic idea of how to make Maven plugins, but haven't had to time to work out all the details.

politrons commented 6 years ago

If I found some time to help you out I will let you know.

Enviado desde mi iPhone

El 13 nov 2018, a las 22:08, Rahul Muttineni notifications@github.com escribió:

That's a valid reason :) Unfortunately, we don't have the bandwidth to work on it right now.

If you are willing to start work on the Maven plugin, happy to assist in whatever way I can. I have tried as a weekend project to get a Maven plugin working 2-3 times now so I do have a basic idea of how to make Maven plugins, but haven't had to time to work out all the details.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

szabi commented 5 years ago

@rahulmutt,

I have tried as a weekend project to get a Maven plugin working 2-3 times now so I do have a basic idea of how to make Maven plugins, but haven't had to time to work out all the details.

Can you sum up the main take-aways?

What would be the overall logical structure of such a plugin?

talios commented 5 years ago

I could take a look and help out as well ( seems I have a penchant/habit of writing maven language plugins - clojure, coffeescript, frege ).

I guess a majority of the plugin would reuse/share code from the Gradle plugin - so I'd assume we could a) depend on a prebuilt jar of eta from maven central/elsewhere ( for the clojure-maven-plugin I left that up to the consumer to provide that <dependency> block.