plugin para descargar compiler maven mingw integration lifecycle eclipse-cdt

para - maven-compiler-plugin



Usando Maven para construir c++ en eclipse (1)

Mi proyecto consta de varios proyectos Java, un proyecto Java-JNI-C ++ como un puente y un proyecto C ++ puro que conserva una biblioteca de algoritmos. Me las arreglé para escribir las configuraciones de compilación de Maven para los 3 tipos de proyectos. Entonces, cuando los llamo en la línea de comandos (Windows 7, 64 bits), todo funciona muy bien.

No uso ningún archivo make o algo así. Uso exec-maven-plugin para llamar a mi instalación de 64 bits de mingw sin cygwin (y tampoco instalé msys a sabiendas). Así que 2 comandos de línea de comandos puros g ++ para cada uno de los proyectos JNA y Library.

Lo que necesito ahora para un flujo de trabajo de desarrollo sin problemas es poder compilar y depurar estos proyectos desde Eclipse pero utilizando los scripts de compilación de Maven, ya que no quiero poner trabajo en mis poms y además configurar el generador de eclipse. ¡Esto debería ser consistente! Además, si el análisis de errores en Eclipse es consistente con la salida de la compilación maven.

Para mis proyectos de Java esto funciona en gran medida fuera de la caja Eclipse recoge la configuración de Maven y CLEAN y BUILD producen exactamente lo que debería. (Aunque veo que el Java Builder todavía está activo en las propiedades del proyecto. ¿Por qué?). Pero no puedo hacerlo funcionar con el CDT.

Cuando deshabilito el C ++ Builder Eclipse solo se compila con maven (lo que quiero), pero los comandos de limpieza no funcionan correctamente. También obtengo errores marcados que no son errores por el compilador. Por supuesto esto debería ser consistente.

¿Hay tutoriales para este caso de uso?

No encontré información sobre ese tema. ¡¿No estoy seguro de que, en general, voy en una dirección equivocada y me faltan las mejores prácticas o algo así ?!

Ya que esta es mi primera pregunta, no dude en enviarme comentarios sobre mi pregunta. Lo que puedo proporcionar lo haré ;-)

Alguna información:

Sistema Windows 7, 64bit

Eclipse Juno, m2e

Biblioteca POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>mylib</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>MyLib</name> <build> <pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <versionRange>[1.1.1,)</versionRange> <goals> <goal>exec</goal> </goals> </pluginExecutionFilter> <action> <execute> <runOnIncremental>true</runOnIncremental> </execute> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <id>compile-Windows_x64</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>g++</executable> <workingDirectory>target/cpp/Windows_x64</workingDirectory> <arguments> <argument>-Wall</argument> <argument>-m64</argument> <argument>-c</argument> <argument>-DAPI_EXPORT</argument> <argument>-g3</argument> <argument>-std=c++0x</argument> <argument>../../../src/main/cpp/*.cpp</argument> </arguments> </configuration> </execution> <execution> <id>link-Windows_x64</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>g++</executable> <workingDirectory>target</workingDirectory> <arguments> <argument>-shared</argument> <argument>-s</argument> <argument>-m64</argument> <argument>-oMyLib_Windows_x64.dll</argument> <argument>cpp/Windows_x64/*.o</argument> </arguments> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration> <descriptors> <descriptor>src/main/assembly/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-testCompile</id> <phase>none</phase> </execution> <execution> <id>default-compile</id> <phase>none</phase> </execution> </executions> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-jar</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>default-test</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>default-resources</id> <phase>none</phase> </execution> <execution> <id>default-testResources</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>default-install</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> <executions> <execution> <id>default-deploy</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.0</version> <executions> <execution> <id>default-site</id> <phase>none</phase> </execution> <execution> <id>default-deploy</id> <phase>none</phase> </execution> </executions> </plugin> </plugins> </build> </project>

JNI POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>myprog</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>MyProg</name> <build> <pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>truezip-maven-plugin</artifactId> <versionRange>[1.1,)</versionRange> <goals> <goal>copy</goal> </goals> </pluginExecutionFilter> <action> <execute> <runOnIncremental>true</runOnIncremental> </execute> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <versionRange>[1.1.1,)</versionRange> <goals> <goal>exec</goal> </goals> </pluginExecutionFilter> <action> <execute> <runOnIncremental>true</runOnIncremental> </execute> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>truezip-maven-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>get-library-headers</id> <goals> <goal>copy</goal> </goals> <phase>generate-sources</phase> <configuration> <fileset> <directory>../MyLib/target/mylib-0.0.1-SNAPSHOT-dll.zip</directory> <includes> <include>headers/*</include> </includes> <outputDirectory>${project.build.directory}/myLib</outputDirectory> </fileset> </configuration> </execution> <execution> <id>get-library</id> <goals> <goal>copy</goal> </goals> <phase>generate-resources</phase> <configuration> <fileset> <directory>../MyLib/target/mylib-0.0.1-SNAPSHOT-dll.zip</directory> <includes> <include>*.dll</include> </includes> <outputDirectory>${project.build.directory}</outputDirectory> </fileset> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <id>compile-Windows_x64</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>g++</executable> <workingDirectory>target/cpp/Windows_x64</workingDirectory> <arguments> <argument>-Wall</argument> <argument>-m64</argument> <argument>-c</argument> <argument>-g3</argument> <argument>-std=c++0x</argument> <argument>-I../../myLib/headers</argument> <argument>../../../src/main/cpp/*.cpp</argument> </arguments> </configuration> </execution> <execution> <id>link-Windows_x64</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>g++</executable> <workingDirectory>target</workingDirectory> <arguments> <argument>-m64</argument> <argument>-s</argument> <argument>-oMyProg_Windows_x64.exe</argument> <argument>cpp/Windows_x64/*.o</argument> <argument>MyLib_Windows_x64.dll</argument> </arguments> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-testCompile</id> <phase>none</phase> </execution> <execution> <id>default-compile</id> <phase>none</phase> </execution> </executions> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-jar</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>default-test</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>default-resources</id> <phase>none</phase> </execution> <execution> <id>default-testResources</id> <phase>none</phase> </execution> </executions> </plugin> </plugins> </build> </project>

Thankx


Eclipse no utiliza la versión Maven. En su lugar, configura el JDT de acuerdo con su POM. Esto se hace a través de un conector M2E (Maven a Eclipse). Si desea que lo mismo funcione con CDT, entonces necesitará un conector M2E para eso. No tengo conocimiento de uno existente, por lo que tendría que escribir un complemento de Eclipse para eso. Consulte http://wiki.eclipse.org/M2E/Extension_Development para obtener detalles sobre cómo hacerlo.

Por supuesto, también puede usar "ejecutar" en lugar de "ignorar" en su ciclo de vida. Hacer mapas en el pom. Pero eso probablemente sería una construcción bastante lenta, ya que toda la construcción se activaría en cada cambio. Y aún así esto no haría "mágicamente" que los errores de Maven aparezcan en sus archivos.