Incluyendo files .jar en Github para coinheritance

Soy nuevo en el uso de github y he estado tratando de resolver esta pregunta mirando los repositorys de otras personas, pero no puedo entenderlo. Cuando las personas bifurcan / clonan repositorys en github en sus computadoras locales para desarrollar en el proyecto, se espera que el proyecto clonado esté completo (es decir, tenga todos los files que necesita para ejecutarse correctamente). Por ejemplo, si tuviera que usar una biblioteca de terceros en forma de un file .jar, ¿debería include ese file .jar en el repository para que mi código esté listo para ejecutarse cuando alguien lo clone, o es mejor que lo haga? simplemente tome nota de que está utilizando bibliotecas de terceros y el usuario deberá download esas bibliotecas en otro lugar antes de que comiencen a trabajar. Solo estoy tratando de encontrar las mejores prácticas para mis commits de código.

¡Gracias!

Básicamente es como dijo Chris.

Debe usar un sistema de compilation que tenga un administrador de packages. De esta manera usted especifica qué dependencies necesita y las descarga automáticamente. Personalmente he trabajado con maven y ant. Entonces, aquí está mi experiencia:

Apache Maven:

Primera información sobre maven, no es un administrador de packages. Es un sistema de compilation. Simplemente incluye un administrador de packages, porque para los java, la descarga de las dependencies es parte del process de compilation.

Maven viene con un buen set de valores pnetworkingeterminados. Esto significa que simplemente usa el plugin archtype para crear un proyecto ("arquetipo mvn: crear" en el cli). Piense en un arquetipo como plantilla para su proyecto. Puedes elegir el arquetipo que mejor se adapte a tus necesidades. En caso de que utilice algún marco, probablemente haya un arquetipo para él. De lo contrario, el arquetipo de proyecto simple será tu elección. Luego su código va a src / main / java, sus casos de testing van a src / test / java y "mvn install" buildá todo. Las dependencies se pueden agregar al formatting de dependencia de pom in maven. http://search.maven.org/ es el lugar para search dependencies. Si lo encuentras allí, simplemente puedes copyr el fragment xml a tu pom.xml (que ha sido creado por el sistema arquetipo de maven).

En mi experiencia, maven es la forma más rápida de get un proyecto con dependencies y configuration de ejecución de testing. Además, nunca experimenté que una versión maven que funcionaba en mi máquina falló en otro lugar (a exception de las computadoras que tenían versiones java de un año). El encanto es que el ciclo de vida pnetworkingeterminado de maven (o el ciclo de compilation) cubre todas sus necesidades. También hay muchos complementos para casi todo. Sin embargo, tienes un gran problema si quieres hacer algo que no está cubierto por el ciclo de vida de maven. Sin embargo, solo lo he encontrado en proyectos de idiomas mixtos. Tan pronto como necesites algo más que Java, estás jodido.

Apache Ivy:

Solo lo he usado junto con Apache Ant. Sin embargo, Ivy es un administrador de packages, y proporciona un sistema de compilation. Ivy está integrado en la ant como un complemento. Mientras que Maven generalmente funciona de la caja, Ant requiere que escribas tu file de compilation manualmente. Esto permite una mayor flexibilidad que maven, pero viene con el premio de otro file para escribir y mantener. Básicamente, los files Ant son tan complicados como cualquier código fuente, lo que significa que debe comentarlos y documentarlos. De lo contrario, no podrá mantener su process de compilation más adelante.

Ivy es tan fácil como el sistema de dependencia de maven. Usted tiene un file xml que define sus dependencies. En cuanto a maven, puedes encontrar los fragments xml apropiados en maven central http://search.maven.org/ .

Como resumen, recomiendo Maven en caso de que tenga un proyecto Java simple. Ant es para casos en los que necesitas hacer algo especial en tu construcción.