Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maven plugin for Eta #571

Open
rahulmutt opened this issue Nov 29, 2017 · 11 comments
Open

Maven plugin for Eta #571

rahulmutt opened this issue Nov 29, 2017 · 11 comments
Labels

Comments

@rahulmutt
Copy link
Member

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
Copy link

joshsh commented Dec 20, 2017

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
Copy link
Member Author

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
Copy link

joshsh commented Dec 20, 2017

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

@politrons
Copy link

What is the current state of the Maven Plugin?

@joshsh
Copy link

joshsh commented Nov 12, 2018

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
Copy link
Member Author

@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
Copy link

politrons commented Nov 13, 2018 via email

@rahulmutt
Copy link
Member Author

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
Copy link

politrons commented Nov 13, 2018 via email

@szabi
Copy link

szabi commented Aug 30, 2019

@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
Copy link

talios commented Sep 3, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants