
//// NO EDITE ESTE ARCHIVO. FUE GENERADO. Los cambios manuales en este archivo se perderán cuando se genere de nuevo. Edite los archivos del directorio src/main/asciidoc/ en su lugar. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
Este proyecto proporciona una puerta de enlace de API (API Gateway) construida sobre el ecosistema Spring, que incluye: Spring 5, Spring Boot 2 y Project Reactor. Spring Cloud Gateway tiene como objetivo proporcionar una forma sencilla pero eficaz de enrutar hacia las API y de aplicarles preocupaciones transversales, como: seguridad, monitoreo/métricas y resiliencia.
== Características
DiscoveryClient para configurar rutas== Compilación
:jdkversion: 1.8
=== Compilación y pruebas básicas
Para compilar el código fuente deberá instalar JDK {jdkversion}.
Spring Cloud usa Maven para la mayoría de las actividades relacionadas con la compilación, y debería poder ponerse en marcha con bastante rapidez clonando el proyecto que le interese y escribiendo
NOTA: También puede instalar Maven (>=3.3.3) por su cuenta y ejecutar el comando mvn
en lugar de ./mvnw en los ejemplos siguientes. Si hace eso, también
podría necesitar agregar -P spring si su configuración local de Maven no
contiene declaraciones de repositorio para los artefactos de prelanzamiento de Spring.
NOTA: Tenga en cuenta que es posible que necesite aumentar la cantidad de memoria
disponible para Maven estableciendo una variable de entorno MAVEN_OPTS con
un valor como -Xmx512m -XX:MaxPermSize=128m. Intentamos cubrir esto en
la configuración de .mvn, así que si encuentra que tiene que hacerlo para que la
compilación tenga éxito, abra un ticket para que se agreguen los ajustes al
control de fuentes.
Los proyectos que requieren middleware (es decir, Redis) para las pruebas generalmente requieren que una instancia local de Docker esté instalada y en ejecución.
=== Documentación
El módulo spring-cloud-build tiene un perfil "docs" y, si lo activa,
intentará compilar las fuentes asciidoc desde
src/main/asciidoc. Como parte de ese proceso, buscará un
README.adoc y lo procesará cargando todos los includes, pero sin
analizarlo ni renderizarlo, solo copiándolo a ${main.basedir}
(por defecto ${basedir}, es decir, la raíz del proyecto). Si hay
cambios en el README, aparecerán después de una compilación de Maven como
un archivo modificado en el lugar correcto. Solo haga commit y envíe el cambio.
=== Trabajar con el código
Si no tiene preferencia por un IDE, le recomendamos que use https://www.springsource.com/developer/sts[Spring Tools Suite] o https://eclipse.org[Eclipse] cuando trabaje con el código. Usamos el complemento de Eclipse https://eclipse.org/m2e/[m2eclipse] para el soporte de Maven. Otros IDE y herramientas también deberían funcionar sin problemas siempre que usen Maven 3.3.3 o superior.
==== Activar el perfil de Maven de Spring
Los proyectos de Spring Cloud requieren que el perfil de Maven 'spring' esté activado para resolver los repositorios de hitos (milestones) y snapshots de Spring. Use su IDE preferido para activar este perfil; de lo contrario, podría experimentar errores de compilación.
==== Importar en Eclipse con m2eclipse
Recomendamos el complemento de Eclipse https://eclipse.org/m2e/[m2eclipse] cuando trabaje con Eclipse. Si aún no tiene m2eclipse instalado, está disponible en el "eclipse marketplace".
NOTA: Las versiones antiguas de m2e no admiten Maven 3.3, por lo que, una vez
importados los proyectos en Eclipse, también deberá indicarle a
m2eclipse que use el perfil correcto para los proyectos. Si ve
muchos errores diferentes relacionados con los POM de los proyectos, verifique
que tenga una instalación actualizada. Si no puede actualizar m2e,
agregue el perfil "spring" a su settings.xml. Alternativamente, puede
copiar la configuración del repositorio del perfil "spring" del pom
principal en su settings.xml.
==== Importar en Eclipse sin m2eclipse
Si prefiere no usar m2eclipse, puede generar los metadatos del proyecto de Eclipse con el siguiente comando:
$ ./mvnw eclipse:eclipse
Los proyectos de Eclipse generados se pueden importar seleccionando import existing projects
en el menú file.
== Contribuciones
:spring-cloud-build-branch: master
Spring Cloud se publica bajo la licencia Apache 2.0, no restrictiva, y sigue un proceso de desarrollo de Github muy estándar, usando el rastreador de Github para los problemas y fusionando las pull requests en master. Si quiere contribuir incluso con algo trivial, no lo dude, pero siga las pautas a continuación.
=== Firmar el Acuerdo de Licencia del Colaborador
Antes de aceptar un parche o pull request no trivial, necesitaremos que firme el https://cla.pivotal.io/sign/spring[Contributor License Agreement]. Firmar el acuerdo del colaborador no otorga a nadie derechos de commit en el repositorio principal, pero sí significa que podemos aceptar sus contribuciones y recibirá un crédito de autor si lo hacemos. Es posible que se pida a los colaboradores activos que se unan al equipo central y se les dé la capacidad de fusionar pull requests.
=== Código de Conducta
Este proyecto se adhiere al https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[código de conducta] del Contributor Covenant. Al participar, se espera que cumpla este código. Informe cualquier comportamiento inaceptable a [email protected].
=== Convenciones de código y mantenimiento
Ninguna de estas es esencial para una pull request, pero todas ayudan. También pueden agregarse después de la pull request original, pero antes de una fusión (merge).
eclipse-code-formatter.xml del proyecto
https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring
Cloud Build]. Si usa IntelliJ, puede usar el
https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter
Plugin] para importar el mismo archivo..java nuevos tengan un comentario de clase Javadoc simple con al menos una
etiqueta @author que lo identifique y, preferiblemente, al menos un párrafo sobre para qué sirve la clase..java nuevos (cópielo de los archivos existentes
del proyecto).@author en los archivos .java que modifique sustancialmente (más
que cambios cosméticos).Fixes gh-XXXX al final del mensaje
del commit (donde XXXX es el número del problema).=== Checkstyle
Spring Cloud Build incluye un conjunto de reglas de checkstyle. Puede encontrarlas en el módulo spring-cloud-build-tools. Los archivos más notables del módulo son:
<1> Reglas de Checkstyle predeterminadas <2> Configuración del encabezado de archivo <3> Reglas de supresión predeterminadas
==== Configuración de Checkstyle
Las reglas de Checkstyle están deshabilitadas de forma predeterminada. Para agregar checkstyle a su proyecto, simplemente defina las siguientes propiedades y complementos.
<reporting>
<plugins>
<plugin> <5>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</reporting>
Si necesita suprimir algunas reglas (p. ej., la longitud de línea debe ser mayor), es suficiente con que defina un archivo en ${project.root}/src/checkstyle/checkstyle-suppressions.xml con sus supresiones. Ejemplo:
Es recomendable copiar ${spring-cloud-build.rootFolder}/.editorconfig y ${spring-cloud-build.rootFolder}/.springformat a su proyecto. De esa manera, se aplicarán algunas reglas de formato predeterminadas. Puede hacerlo ejecutando este script:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat
=== Configuración del IDE
==== Intellij IDEA
Para configurar Intellij, debe importar nuestras convenciones de codificación, perfiles de inspección y configurar el complemento checkstyle. Los siguientes archivos se pueden encontrar en el proyecto https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build].
<1> Reglas de Checkstyle predeterminadas <2> Configuración del encabezado de archivo <3> Reglas de supresión predeterminadas <4> Valores predeterminados del proyecto para Intellij que aplican la mayoría de las reglas de Checkstyle <5> Convenciones de estilo del proyecto para Intellij que aplican la mayoría de las reglas de Checkstyle
.Estilo de código
image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-code-style.png[Estilo de código]
Vaya a File -> Settings -> Editor -> Code style. Allí, haga clic en el icono junto a la sección Scheme. Luego, haga clic en el valor Import Scheme y elija la opción Intellij IDEA code style XML. Importe el archivo spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml.
.Perfiles de inspección
image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-inspections.png[Estilo de código]
Vaya a File -> Settings -> Editor -> Inspections. Allí, haga clic en el icono junto a la sección Profile. Luego, haga clic en Import Profile e importe el archivo spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml.
.Checkstyle
Para que Intellij funcione con Checkstyle, debe instalar el complemento Checkstyle. También es recomendable instalar Assertions2Assertj para convertir automáticamente las aserciones de JUnit.
Vaya a File -> Settings -> Other settings -> Checkstyle. Allí, haga clic en el icono + en la sección Configuration file. Luego, deberá definir de dónde se tomarán las reglas de checkstyle. En la imagen anterior, hemos tomado las reglas del repositorio clonado de Spring Cloud Build. Sin embargo, puede apuntar al repositorio de GitHub de Spring Cloud Build (p. ej., para checkstyle.xml: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml). Debemos proporcionar las siguientes variables:
checkstyle.header.file - apúntelo al archivo spring-cloud-build-tools/src/main/resources/checkstyle-header.txt de Spring Cloud Build, ya sea en su repositorio clonado o mediante la URL https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt.checkstyle.suppressions.file - supresiones predeterminadas. Apúntelo al archivo spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml de Spring Cloud Build, ya sea en su repositorio clonado o mediante la URL https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml.checkstyle.additional.suppressions.file - esta variable corresponde a las supresiones en su proyecto local. P. ej., si está trabajando en spring-cloud-contract, apunte a la carpeta project-root/src/checkstyle/checkstyle-suppressions.xml. Un ejemplo para sería: .IMPORTANTE: Recuerde establecer Scan Scope en All sources, ya que aplicamos las reglas de checkstyle a las fuentes de producción y de prueba.
=== Duplicate Finder
Spring Cloud Build incluye el basepom:duplicate-finder-maven-plugin, que permite marcar clases y recursos duplicados y en conflicto en el classpath de Java.
==== Configuración de Duplicate Finder
Duplicate finder está habilitado de forma predeterminada y se ejecutará en la fase verify de su compilación de Maven, pero solo tendrá efecto en su proyecto si agrega el duplicate-finder-maven-plugin a la sección build del pom.xml del proyecto.
Para otras propiedades, hemos establecido valores predeterminados como se enumeran en la https://github.com/basepom/duplicate-finder-maven-plugin/wiki[documentación del complemento].
Puede anularlas fácilmente estableciendo el valor de la propiedad seleccionada con el prefijo duplicate-finder-maven-plugin. Por ejemplo, establezca duplicate-finder-maven-plugin.skip en true para omitir la verificación de duplicados en su compilación.
Si necesita agregar ignoredClassPatterns o ignoredResourcePatterns a su configuración, asegúrese de agregarlos en la sección de configuración del complemento de su proyecto:
spring-cloud-contract/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml