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

redesign build tools #337

Closed
jknack opened this issue Apr 3, 2016 · 3 comments
Closed

redesign build tools #337

jknack opened this issue Apr 3, 2016 · 3 comments
Labels

Comments

@jknack
Copy link
Member

jknack commented Apr 3, 2016

proposal

Build tools like: jooby:run, maven profiles etc... need to be redesign and make them independently from Maven.

why?

It will simplify and provides integration with IDEs and other build tools (like gradle)

@agentgt
Copy link
Contributor

agentgt commented Apr 21, 2016

Since you are researching build tools it might be interesting to investigate the Takari lifecycles.

Depending on how you configure Takari there probably is some overlap though with some of the jooby:run stuff (I'm guessing it uses JDT to hotswap or maybe I'm wrong?).

However Takari will speed up CI builds and you can configure it to use JDT as well. You could add this to the maven archetype.

One of the reasons people use Gradle these days besides terseness is that it basically does what the Takari lifecycles do (ie intelligence on incrementally building and faster building).

My favorite feature of Takari is that you can make it so that will not allow transitive dependencies in the classpath during compilation. For big projects this is a pretty nice feature to force developers not to randomly import a transitive dependency.

While that sounds awful because you have to declare each transitive dependency you actually want to use Jooby can make a BOM pom file with things like Guice and Typesafe config (etc).

@jknack
Copy link
Member Author

jknack commented Apr 21, 2016

I did look at Takari before, but never try it. Seems you did, right? Does everything work? Can you configure a jooby project with Takari and share it?

Depending on how you configure Takari there probably is some overlap though with some of the jooby:run stuff (I'm guessing it uses JDT to hotswap or maybe I'm wrong?).

jooby:run doesn't hotswap.. it restart the app in a new classloader using jboss modules.

However Takari will speed up CI builds and you can configure it to use JDT as well. You could add this to the maven archetype.

I do want to move to JDT but not sure if people will like or complain about that. There are some features that I can't add bc they work in JDT but not javac.

My favorite feature of Takari is that you can make it so that will not allow transitive dependencies in the classpath during compilation. For big projects this is a pretty nice feature to force developers not to randomly import a transitive dependency.

That is a cool and useful feature. I didn't know that was possible in Takari. For example, I pay special attention while adding a new module to make sure the module dependencies are clean and/or sync with the existing dependencies. Why? don't want users to have a bad time with dependencies while adding modules. That is why maven build handles all the dependencies and the final pom is usually small.

@agentgt
Copy link
Contributor

agentgt commented Apr 21, 2016

It seems to work for small projects. I couldn't get it to work for one of our behemoth monolithic projects because we have some nasty AspectJ compile weaving.

jooby:run doesn't hotswap.. it restart the app in a new classloader using jboss modules.

As for using the term hotswap I did think you were reloading the classloader. I'm not sure why I said hotswap. I think JRebel is the only thing that really works with true hotswap. Speaking of which does JRebel work with jooby?

I'll see if I can take a look takari-ng jooby this weekend.

jknack added a commit that referenced this issue Jul 1, 2016
* Fix #396: undertow server doesnt work with jooby:run
* Improve #337: redesign build tools. Now jooby:run is a lot more independent from Maven
jknack added a commit that referenced this issue Jul 4, 2016
@jknack jknack closed this as completed Jun 1, 2018
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

2 participants