I don't see the point of Gradle / Maven [closed] - java

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I don't get why would anyone want to use tools like Gradle or Maven, I mean what do they even do? I tried to understand and use them but that got me no where they just unnecessarily complicate things and create a lot of what seems to be absolutely useless files.
So, why bother at all and use these tools and what are they good for?

First of all Gradle and Maven are great tools for managing your dependencies and also giving you the option to simplify your build process. Without these tools you would have to manually download *.jar files. And copy them somewhere in your project folder.
And if you want to update, you would have to open the website again, download it and replace your existing JAR.
Quite often JARs themself have dependencies, so you would have to manually download them as well.
I can understand that the setup of Maven / Gradle at first can be time consuming, but it's usually worth the time since you just have to declare: I need package com.example.package in version 1.2.3 and you just have to run a simple install command and they will take care of downloading everything needed.
Secondly, you can declare commands describing how to run your tests and they will usually take care of your tests not getting mixed up with your final and compiled package.
Also this is good for collaboration because once this config is shared, every developer can use it without going much of a hassle of configuring your development environment. Another good point is that it is independent of any IDE, so your project is not an IntelliJ or Eclipse project and everyone can use the IDE/editor they prefer.
Basically the idea is: You configure it once and then you can enjoy the automatism.
However, if your project is really small and relying on only a few dependencies you might not need it.

Related

Java dependency grapher [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Problem:
I have a large, old, disorganized java project from the early 2000s.
The project is built using ant.
There is no dependency management, everything is handled by storing jars locally.
The compile and package targets for the build script are very broad, and mostly just compile and subsequently package the entire project, shuffling environment specific properties files around as needed.
At some point during the lifespan of the project, a few separate build targets were introduced, to enable a web interface for admin tooling and the like.
However, because there is no dependency management, and because the buildscript isn't very selective, the current process is packaging up the entire web application and deploying it along with the admin tools, with a very minimal list of differences between the two.
I am currently embarking on attempting to bring sanity to the codebase by deprecating and re-factoring the ant buildfiles and introducing build/deployment automation by way of CI tooling.
As a part of the next phase of this effort, I would like to attempt to refactor the project structure and the buildfiles to only package what it needs to package in the war files for the admin tools and production web-application, respectively, and hopefully, only compile one pass instead of several.
To solve this problem it seems likely that I will need to build a list of dependencies for a given JSP, or at least a list of java classes. Manually doing legwork to track some stuff down is hardly beneath me, but the scope of the project is large enough that without some automated assistance I have no hope of ever completing the task in a reasonable timeframe.
I have yet to find a solution to this that doesn't involve a hefty software license or a project that is already using Maven.
Given that Eclipse can take an arbitrary method from an arbitrary file of source in this project and find me the resource on the file-system that corresponds, it seems as though this must not be an unsolvable engineering quandary -
Does there exist a free (as in beer, ideally also as in software) solution to generating a dependency graph (or similar) for a project like this?
Failing that, can the good citizens of stack overflow suggest a different approach to my problem I may not have considered?
I see that this question is considered a duplicate.
In hopes of boosting someone's future google search results:
jdeps will recursively print dependencies for a given class name, class file, or jar to stdout, is probably the least cost solution for solving this exact problem, and comes pre-packaged with JDK 8 and above.
I found that buried 10 answers deep on a 4 year old question that was asked prior to the existence of the utility in question, on an answer that received 0 upvotes, so, I feel re-posting it here may be of potential value for future users of the site.

Lerna-like tools / handling monorepos in Java [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I come from a web-development background and have frequently worked on projects that use Lerna for handling multiple packages from the same repository in JavaScript. As it stands now, I need to recreate some of those projects in Java, and need to know how to do it without using Lerna, and using Gradle as our build tool.
My questions are about how to handle a large repository with multiple packages in Java:
Edit: Rewording the question to fit in the guidelines. Keeping the old questions below in strike through so old answers make more sense.
Do I need to use a separate tool to help manage packages in Java like Lerna does for JavaScript, or can a build tool such as Maven or Gradle handle that on its own.
If two teams are using different build tools, is it more prone to cause problems for their various contributions?
Is maintaining multiple Java packages within one repository viable in the first place?
Are there any packages or plugins that already do this in Java? (I was unable to find any.)
Will solutions likely cause problems between teams using different build tools for their various contributions? (ex: Maven and Gradle)
Is maintaining multiple Java packages within one repository viable in the first place?
Is there anything I am fundamentally failing to understand while asking this? Am I headed in the wrong direction for finding a solution?
At this point in time, the de-facto standard for Java project management seems to be a combination of gradle and maven (via a gradle plugin).
The combination of these two eliminates the need for tooling such as Lerna, as they allow local dependencies to be configured out of the box.
After setting up a multi-project build, you can add sibling projects as dependencies like so:
dependencies {
compile project(':sibling')
}
If you use an IDE such as Intellij IDEA for instance which supports gradle, it will create the initial directory structure for you when you create a gradle project, and configure new modules that you create via its UI. It might be a good idea to play with this for a little bit in order to get a grasp of how it's all wired up.
Java handles packages on the language level very well. I don't understand the question. You can create different packages/modules/etc. in any project. For build management with dependencies use Maven or Gradle.

Adjusting IntelliJ IDEA plugins for java [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
(I'm a beginner and I want to make "small" java projects).
I want to make IntelliJ run faster, so I want to cancel all the plugins that I'm not going to use.
The plugins:
1.build tools: Ant, Maven, Gradle.
2.version controls: CVS, Git, Github, hg4idea, subversion.
3.Test tools: Junits, TestNG-J, Coverage.
4.Swing: UI designer.
And others....
Thanks.
Its true that all plugins make IntelliJ start up slower, and many of them can make IntelliJ run slower. If you run with 30 plugins compared to zero - you'll notice the difference.
The best advice is to disable ALL plugins when you install IntelliJ.
Then, you can enable plugins one at a time as you need them.
Need source control? Great, enable Git plugin. Need Swing UI? Enable UI Designer... you get the idea.
Of those you listed, you probably need none of them except Maven and JUint and a version control plugin (git or svn or whatever is your cup of tea).
This really is a simple but good advice. For reference: I am a long time intellij user and plugin designer.

Android Studio Benefits vs Eclipse with ADT [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I have looked in different places, but I am not REALLY sure as to what to use. I'll explain:
I'm self-teaching myself, with various books and tutorials. I use Eclipse with the ADT, but it seems now that Google is really pushing people to use AStudio (especially after its recent stable release). I have heard that AStudio has the following benefits:
Gradle Build
Improved Visual Editor
Improved code completion
Amongst many other benefits...
For starters, what are the benefits of AStudio put simply? (For example, what actually IS Gradle building?!)
However, for a novice like myself, would it be beneficial for me to switch to AStudio? (considering that I'm also trying to teach myself some CORE Java)
Sorry if this seems like a repetition, but I was just hoping to recieve information in terminology that I can understand...
Thanks!
Android Studio is the new IDE for developing Android apps. Google decided to change it, and so we must follow. I found an article that compares Eclipse and Studio for you: http://news.dice.com/2014/03/19/googles-android-studio-vs-eclipse-fits-needs/
You want to know what Gradle is?
Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or anything else.For example, it is possible to simply add a Sonar connection, to check your code.
Also Gradle uses dependency management, which will make it a lot easier to add libraries to your projects, and sharing them with other developers.
Where Eclipse required to have a local copy of a library downloaded on your pc, gradle automates this. Add the library to your graddle file, and it will download the package for you.
Gradle will do this again when your project is transfered to another workstation. So no more cursing about libraries that were not sent to you.
Learning Java can still be done in Eclipse, or transfer to IntelliJ IDEA. AS is powered by IntelliJ, and has the same interface. IntelliJ and AS both get updates frequently, a lot more then what I saw with Eclipse.

application server integration into development process [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Aloha,
I am currently doing my Master thesis in writing an internal Web Application. I'm pretty much starting from scratch. Of course there are some requirements but those are not too important for my question.
Giving the case that there will be further development/maintenance when I'm finished with the thesis from 4-6 developers.
What I've done in previous projects/assignments was installing the Application Server (AS) by hand (setting it up etc.) on my developer machine.
What I've done as well is to use Maven to install and configure something like Jetty/Tomcat and the other developers just have to get the Maven project, run mvn install and their good to go.
But what will you do with an AS like Wildfly?
My Question would be is there any best practice for handling an AS in a team from 4-6 developers? (AS just on developer machines, not Devevelopment/Quality/Production systems)
You have 4 options if you considering the Wildfly as your AS
Include your modified standalone.xml inside your project, maybe in src/main/resources/ folder, every developer can pull it through Git or whatever VCS are you using.
You can create CLI script for a Wildfly and include it to your code base again. You can find some tutorial on the internet, for instance here. The advantage over XML is that you don't have to modify source manually, script can be executed as a batch which means it will either configure everything correctly or leave it intact.
Configure Wildfly through the Maven plugin. You can run there same commands as in option 2, some example can be seen here.
You can also upload a modified ZIP with your server to some location and make every developer use this version. Downside is that everybody will have to download this ZIP again if you make any modifications to the configuration.
So I think option number 3 is the best (because it's most automated and it's easiest to spread the configuration change among all developers) however your pom.xml can get really bloated with configuration. In this case, you can combine it with option number 2 so the Maven plugin will just ran the CLI script file from inside of your project.

Categories