¿Cuál es la ventaja de la convención ‘src / main / java’ ‘?

Me he dado cuenta de que muchos proyectos tienen la siguiente estructura:

  • Proyecto-A
    • compartimiento
    • lib
    • src
      • principal
        • Java
          • RootLevelPackageClass.java

Actualmente uso la siguiente convención (ya que mis proyectos son 100% Java):

  • Proyecto-A
    • compartimiento
    • lib
    • src
      • RootLevelPackageClass.java

Actualmente no estoy usando Maven pero me pregunto si esta es una convención Maven o no, o si hay otra razón. ¿Alguien puede explicar por qué la primera versión es tan popular en estos días y si debería adoptar esta nueva convención o no?

Chris

El principal beneficio es tener el directorio de test como subdirectorio de src con la misma estructura de directorios que la main :

  • Proyecto-A
    • compartimiento
    • lib
    • src
      • principal
        • Java
          • RootLevelPackageClass.java
        • recursos
      • prueba
        • Java
          • TestRootLevelPackageClass.java
        • recursos

Todos los métodos privados del paquete de RootLevelPackageClass serán visibles, es decir, comprobables desde TestRootLevelPackageClass . Como el código de prueba también es fuente, su lugar debe estar bajo el directorio src .

Sí, esta es la convención de Maven.

Incluso si su proyecto es 100% Java (como es típico con Maven btw), a menudo tiene archivos de recursos (que van a src/main/resources según la convención Maven), o cosas de aplicaciones web, o … todos estos ajustes en el sistema Maven fácilmente.

Si está satisfecho con su sistema de comstackción actual (lo que sea que sea), no hay razón para cambiar a Maven. De lo contrario, o si comienza un nuevo proyecto, podría evaluar sus opciones, incluido Maven.

Otros ya te han dicho que es una convención de Maven; en su lugar, voy a responder tu pregunta:

Absolutamente ninguno. Ciertamente, es beneficioso separar partes de código para separar carpetas raíz, pero generalmente podría lograr lo mismo con

  • [raíz]
    • src
      • com.org.net
        • Tu clase
    • prueba
      • com.org.net
        • YourTest.class
    • lib
    • compartimiento
    • recursos

en lugar. De hecho, aquí hay una gran cosa que Maven realmente está muy mal : ¡quiere agregar contenido binario al repository de código fuente que solo está destinado al contenido textual! Todo el contenido binario debe ser administrado fuera del repository de código fuente, que incluye imágenes en aplicaciones web y otras cosas.

Pero está bien, supongamos que has decidido vivir en el ecosistema de Maven algo maloliente; entonces, por supuesto, debe seguir las convenciones de Maven lo más estrictamente posible.

Es una convención de Maven.

Maven se basa en el paradigma de configuración de la Convención . Eso significa: si no sigue esta convención, debe configurar dónde se encuentran las fonts. Ese es el principal beneficio en mi humilde opinión.

Sí, esta es una convención de maven, pero incluso si no usas maven, hay beneficios al usarla:

  1. A las personas nuevas en el proyecto les será más fácil ganar velocidad, ya que es un “estándar”
  2. esta convención es flexible y tiene un lugar para código no Java y otras cosas que no tiene en este momento. Esta es una de las razones por las que es popular y es posible que evolucione mejor que un esquema que usted cree por su cuenta.
  3. si quieres mudarte a maven en algún momento, será fácil

Aunque no discutiría que debes cambiar solo para cambiar, cuando comiences un nuevo proyecto realmente no hay razón para no usarlo, a menos que estés en desacuerdo filosóficamente con la forma en que rompe el código.