Red de conocimiento informático - Aprendizaje de programación - Análisis del código fuente de Gin

Análisis del código fuente de Gin

El proyecto reciente ha sido bastante molesto. Maven está de acuerdo con la estructura estándar del código del proyecto Java;

project

- src

-main

- java

-resources

-tests

-java

-resources

"Grad LEIDEA" crea archivos de proyecto intelliJ y ayuda a configurar directorio de raíces de origen directorio raíz de origen de prueba. Trabajo en un departamento y espero que sea más fácil tomar la categoría unitintg2. El propósito de las pruebas es el mismo que proporcionar al proceso de compilación la capacidad de ejecutar los mismos tipos de pruebas. La estructura de proyecto Java estándar para nuestro departamento:

proyecto

- src

-main

- java

-recursos

-pruebas

-comunes

- java

-unidades

- java

-resources

- intg

- java

-resources

Estructura de directorios Tengo dos problemas que resolver:

1. ¿Dónde ejecutar la prueba IntegrationTestUnit?

2. ¿Cómo garantizar que sea necesario restablecer 'Grad Le Idea'? La fuente de prueba Rootgradle tiene la capacidad de reconocer nuevas estructuras de código.

Cómo escribir un complemento de Gradle

Idioma:

JavaGroovyScala recomienda Groovy. Después de todo, Gradle esencialmente dice que es más apropiado usar Groovy para escribir DSL.

Tipo de inyección:

Gradle admite tres formas de inyección de complementos personalizados:

1. Escriba el script de compilación directamente desde el código fuente del complemento.

2.El código fuente del complemento está escrito en el directorio raíz del proyecto dir/buildrsrc/src/main/groovy.

3. Escriba el código fuente del complemento en un proyecto separado e inyéctelo en el proyecto en forma de dependencia jar.

Creo que todos quieren escribir un complemento por sí mismos, configurar un complemento público para el proyecto o escribir directamente un script para el código del complemento y personalizar el complemento. Creo que hay que inyectarlo en un frasco aparte.

Escribir complementos de estructura de proyecto:

No es fácil escribir complementos para Gradle. Primero, agregue las dependencias del proyecto. Utilizo Groovy para escribir complementos que agregan dependencias locales de Groovy.

Código Graer

Complemento de aplicación: "groovy"

Dependencias {

Compilar gradleApi()

Compilar localGroovy()

}

Para escribir el código de implementación del complemento, es necesario implementar la interfaz del complemento, lo que significa que necesito implementar el código para hacer dos cosas para personalizar la estructura del código del proyecto. En segundo lugar, agregue la tarea de prueba de integración, que ejecuta la *Prueba de integración. clase y ejecute la unidad TestIntegrationTest durante la etapa de canalización de compilación.

Código Groovy

Importar org.gradle.api.Plugin

Importar org.gradle.api.Project

Importar org.grad le . API . testing . test

Complemento de implementación de ProjectStructurePlugin {

@Override

Aplicación no válida (proyecto de proyecto){

project.logger.info "Configurar la estructura del proyecto para project.name"

project.configurations {

integrationTestCompile {se extiende desde la compilación de prueba}

integrationTestRuntime { se extiende desde IntegrationTestCompile, testRuntime }

}

Conjunto de recursos de configuración (proyecto)

addIntegrationTestTask (proyecto)

}

Private void addIntegrationTestTask(proyecto proyecto){

Prueba intgTest = project.getTasks().

create("integrationTest ", test . class);

int gtest . clases de prueba dir = conjunto de fuentes de integración . * */* prueba de integración. clase "]

intgTest.inputs.dir 'src '

int gtest. salidas. dir proyecto. conjuntos de fuentes. prueba de integración. salida. clases dir

proyecto. verificación. depende del proyecto. prueba de integración

Depende del proyecto

}

Configuración de vacío privado(proyecto de proyecto){.

project.sourceSets {

Prueba{

java

srcDir 'src/test/unit/java '

srcDir 'src/test/common/java '

}

Recursos{

src dir 'src/test/unit/resources'

}

}

Prueba de integración{

java

srcDir 'src/test/intg/java '

srcDir 'src/test/common/java '

}

Recursos{

srcDir 'src/test/intg/resources '

}

compileClasspath = proyecto. conjuntos de origen. principal. proyecto de salida. prueba de configuración. compilar el proyecto de ruta de clase s. integración testruntime

}

}

}

}

Luego. Cree un archivo en el directorio src/main/resources/meta-INF/grad le-Plugins del proyecto: . Propiedad, que especifica la clase de implementación del complemento:

Código Java

implementation-class = com.xianlinbox plugins projectstructureplugin

Este proyecto utiliza este complemento. -en.

Primero, se necesita el script build.gradle para introducir el formato de archivo de dependencia del paquete Pluginjar. Se recomienda publicar el paquete jar e inyectar el formulario de dependencia Maven de la biblioteca Maven.

Este ejemplo utiliza esta dependencia de archivo:

Código Groovy

Build Script {

Dependencias {

Árbol de archivos Classpath (Directorio: 'libs ', contiene: '*.jars')

}

}

Inyecta y escribe complementos. Tenga en cuenta que este complemento debe ser utilizado por el complemento de Java. Utiliza la propiedad SourceSets. El complemento se importa a:

Groovy Code

Aplicar complemento: "java"

Aplicar complemento: "Project-Structure"

El complemento ejecuta UnitTestIntrgrationTest mediante "prueba de gradle" y "prueba de integración de gradle".

Para resolver el problema de configurar la raíz de la fuente de prueba usted mismo, debe aumentar la capacidad de identificar la raíz de la fuente de prueba a través de la tarea build.gradleideaModule, es decir:

Groovy código

Complemento de aplicación: "idea"

...

idea {

Módulo{

testSourceDirs = archivo(' src/test/ intg/Java ')

testSourceDirs = archivo(' src/test/intg/resources ')

}

}

i Escriba un complemento para configurar la estructura del proyecto:

Código Groovy

......

compileClasspath = proyecto. conjuntos de fuentes. principal. proyecto de salida. prueba de configuración de salida. . p>project.idea {

Módulo {

testSourceDirs = testSourceDirs nuevo archivo (' src/test/intg/java') nuevo archivo (' src/test/intg/resources ' )

}

}

1. Instalación

La instalación de Gradle de Maven requiere carga () == "descompresión == "Configuración del entorno variables (gradle_home; PATH) Configuración de variables de entorno. Recuerde utilizar el comando fuente para que las nuevas variables de entorno estén disponibles para configurar la función. Línea de comando gradle -v "Verifique si la función está instalada.

2.Gradle compila proyectos java estilo Maven.

Primero, cree un "build.gradle" en la raíz del proyecto directorio ". Para compilar un proyecto java, necesita usar el complemento gradlejava.

Código maravilloso

Complemento de aplicación: "java"

Para integrar la función maven, debe agregar el complemento maven

Código Groovy

Aplicar el complemento: "maven" [

Luego configure el estilo del repositorio del proyecto. .

Código Groovy

Repositorio {

maven central();

}

Este ejemplo utiliza el valor predeterminado repositorio central de maven y desea utilizar la configuración general de ese repositorio.

Código Groovy

def localMavenRepo = 'File://' new File(system . getproperty(' user . home '), ' . m2/repository '). Ruta absoluta

Repositorio {

//Utilice la ubicación del repositorio local de Maven. Si solo queremos instalar, no necesitamos este

// un artefacto, pero si queremos usar la dependencia local, sí lo necesitamos

// el repositorio.

URL del repositorio de maven: localMavenRepo

mavenCentral()

}

El proyecto de reconfiguración depende de la tercera plantilla de configuración de la biblioteca:

Código Groovy

Dependencias {

Grupo de compilación: "", nombre: "", versión: ""

}

Por ejemplo, supongamos que el proyecto depende de la versión 4.10 de la configuración de junit.

Código Groovy

Grupo de compilación: "junit", nombre: "junit", versión: "4.10"

Además, las dependencias se abrevian como

Código Groovy

Compilar "::"

Ejemplo

Código Groovy

Compilar "junit:junit:4.10 "

Biblioteca de lanzamiento del proyecto Hezi

Código Groovy

Subir archivo {

Repositorio{

mavenDeployer {

Repositorio (URL: "file://localhost/tmp/my repo/")

}

}