Skip to content
This repository has been archived by the owner on Dec 10, 2020. It is now read-only.

"mavenize" #25

Merged
merged 6 commits into from Jul 27, 2017
Merged

"mavenize" #25

merged 6 commits into from Jul 27, 2017

Conversation

RoboMWM
Copy link
Contributor

@RoboMWM RoboMWM commented Jul 23, 2017

This allows the project to be compiled via maven, and allows for easy workspace setup in IDEs.

This PR maintains this project's directory structure. Only adds pom.xml and jars which are not published to a maven repo.

RoboMWM and others added 3 commits July 23, 2017 00:23
Only adds pom and jars which are not published to a maven repo while
maintaining this project's directory structure

<groupId>me.mrCookieSlime</groupId>
<artifactId>CSCoreLibPlugin</artifactId>
<version>1.5.16</version>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do I need to update that everytime? D:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, if you don't care about maven, you don't have to.

</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why exactly is this here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is for the GriefPrevention dependency.

<repository>
<id>bintray-tastybento-maven-repo</id>
<name>bintray</name>
<url>http://dl.bintray.com/tastybento/maven-repo</url>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, what is this used for?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For aSkyBlock dependency.

pom.xml Outdated
<artifactId>Lockette</artifactId>
<version>0.91.4.9</version>
<scope>system</scope>
<systemPath>${basedir}/lib/Lockette.jar</systemPath>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need to include the compiled distributables of these Plugins in the github repository?
Because neither of us owns this content after all...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, don't have to include, but I do know some repos that do (e.g. https://github.com/projectkorra/projectkorra , some others that I don't recall right now since I'm in a rush right now).

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, "But others do it as well" is no proper justification, that is a called a relativistic bias.

Shouldn't this be able to be served over jitpack.io as well?

Copy link
Contributor Author

@RoboMWM RoboMWM Jul 27, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked into the licenses of the jars included in this PR regarding distribution, and they all seem to be okay:

I did try using jitpack for some of these; LWC and Lockette had missing dependencies in their pom, and thus cannot build. Towny I've heard is a dependency nightmare, and I assumed MassiveCore + Factions weren't mavenized (they were originally, then de-mavenized due to not wanting others to "easily compile it for themselves because he gets rewards from bukkitdev downloads", then I guess they decided to mavenize again.)

If you still really don't want to include these jars, I can fork a couple of these and fix the dependency issues (and use jitpack), or just leave as-is and developers can download the jars themselves into the lib folder.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Id prefer the removal of the distributables, how you handle the rest is up to you.

@TheBusyBiscuit
Copy link
Owner

I really really dislike Maven and am not going to use it, can I still commit to this like before or do I need to make any changes to my working chain?
Side note: I am anyway not working on this anymore but just in case I decide to make a commit at some point or any other person that doesn't use Maven.

@RoboMWM
Copy link
Contributor Author

RoboMWM commented Jul 26, 2017

can I still commit to this like before

Yup. That's why I configured it to use your existing directory structure.

@Redrield
Copy link

+1 to this PR. Mavenizing a project is a good thing 100 times out of 100. Confining developers and contributors to your IDE of preference in order to get a working jar out of your code is a terrible way to go about the open source, and that's not even mentioning how maven makes it easy to distribute your jarfile to other people who also use the platform. This makes version controlling dependencies in all projects easier, because you just need to change a number in order to get the newest version, instead of having to try to find it online.

@TheBusyBiscuit
Copy link
Owner

@Redrield
Not using Maven does not limit your IDE choice in any way.
Java Source Code is and will always be Java Source Code, no matter what IDE has been used...
And distribution will in most cases still happen over Bukkit or the Auto-Updater...

I am not argumenting against this PR, if I would, I would have closed it.
I just don't like Maven, I don't use Maven and your points aren't real reasons except for the one argument that does speak for Maven: Dependency Management, although even that is not necessary but I agree that Maven makes that easier.
If any developer wants to use Maven, they can with this PR.

@Redrield
Copy link

@TheBusyBiscuit Not using universal dependency management does limit the IDE that contributors can use without adding cruft to the repository. It also slows them down the first time they fork it if you don't add the jars to the repo.

Say that you use Eclipse, and you've commited the .classspath plugin. If you havent included the jars, they're gonna need to go download them, which takes time out of actually contributing to your project. If they want to use IntelliJ, they're going to need to download the jars, and then add them one by one to their project, which uses an incompatible file structure to Eclipse.

Maven solves this problem by having one file that is recgonized by all IDEs, and that contains information about all your dependencies. There won't be incompatibilities or lost time if both IDEs can reliably import a Maven project, and add dependencies from it to the developer's classpath.

Overall, it feels like you're making excuses for your workflow where they shouldn't be made. Saying that "Java source code will always be just that" doesn't work when you have dependencies that you're going to need, and your IDE may not even recognize the file adding these dependencies to the classpath.

@RoboMWM
Copy link
Contributor Author

RoboMWM commented Jul 27, 2017

Alright, was able to find a maven repo for everything, so all binaries have been removed from this PR.

@TheBusyBiscuit
Copy link
Owner

TheBusyBiscuit commented Jul 27, 2017

@Redrield
You are contradicting yourself.
It does not limit your IDE choice, as you said yourself, you will need to put in extra steps but it does not prevent you from using a different IDE in any way.
And I said before... Maven makes it easier, but not using it does not confine you.

Argumenting that the world is going to break down if we don't use Maven or claiming that nothing is going to work without Maven is just overreacting.

And Java Source Code is just Java Source Code. Full Stop.
Saying that this isn't the case because of needed dependencies makes no sense, because every IDE will accept the Source Code nonetheless, dependencies are a valid concern when compiling it and Maven can take care of that, in fact Maven makes it easier. But is no necessity.

TL;DR: Claiming that not using Maven would confine you in your IDE preference is still false.

@RoboMWM Thanks for making the changes, merging it.

@TheBusyBiscuit TheBusyBiscuit merged commit 240a2bb into TheBusyBiscuit:master Jul 27, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
3 participants