Software Configuration Management
Posts 1-5 of 5
-
Björn SchorreThe company name is only visible to registered members.Maven2 und Native Maven Plugin für HEX-Files
Hallo,
ich versuche Maven2 dazu zu bringen dem Compiler / Linker einen anderen Dateinamen vorzugeben, als es das Plugin tut.
Benutzen will ich dieses Plugin, weil es wunderbar den Compiler (z.Z. avr-gcc) aufruft und das Kompilat auch passt. Das Ergebniss des Linkvorgangs hat halt nur die falsche Dateiendung.
Hier meinen Konfiguration (teilweise):
----- schnipp -----------------------------------------------
<artifactId>main</artifactId>
<name>main.hex</name>
<packaging>uexe</packaging>
----- schnapp -----------------------------------------------
SOLL:
main.hex
IST:
main.uexe
1. Kann ich dem Plugin auch sagen, wie das Ergebniss benannt werden soll?
2. Oder kann ich das Plugin erweitern, sodass neben exe, a, o, lib, dll, so, ... auch hex als packaging type genutzt werden kann?
Gruß
Björn Schorre
- 19 Feb 2009, 09:15 am
-
Karl Heinz Marbaise Premium Member Group moderatorThe company name is only visible to registered members.Re: Maven2 und Native Maven Plugin für HEX-Files
Hallo,
ich versuche Maven2 dazu zu bringen dem Compiler / Linker einen anderen Dateinamen vorzugeben, als es das Plugin tut.
Benutzen will ich dieses Plugin, weil es wunderbar den Compiler (z.Z. avr-gcc) aufruft und das Kompilat auch passt. Das Ergebniss des Linkvorgangs hat halt nur die falsche Dateiendung.
<packaging>uexe</packaging>
Schon mal einfach <packaging>exe</packaging> versucht ?
1. Kann ich dem Plugin auch sagen, wie das Ergebniss benannt werden soll? Hm....ergibt sich ja aus dem packaging...
Hier eventuell mal nachlesen....
http://maven.apache.org/plugins/maven-compiler-plugin/non-ja...
2. Oder kann ich das Plugin erweitern, sodass neben exe, a, o, lib, dll, so, ... auch hex als packaging type genutzt werden kann? Eventuell könnte man hier ja mal in das Assembly plugin tiefer einsteigen und schauen, ob man damit weiter kommt...
BTW: Wie sieht denn so eine Konfiguration für avr-gcc aus die, bis auf obiges funktioniert ?
MfG
Karl Heinz Marbaise
- 19 Feb 2009, 11:29 am
-
Björn SchorreThe company name is only visible to registered members.Re^2: Maven2 und Native Maven Plugin für HEX-Files
Hallo,
Schon mal einfach <packaging>exe</packaging> versucht ?
Ja natürlich, aber dann ist die Dateiendung ja exe.
Hm....ergibt sich ja aus dem packaging...
Stimmt!
Aber bei der ANgabe von hexe gibt's folgenden Fehler:
[INFO] Cannot find lifecycle mapping for packaging: 'hex'.
Component descriptor cannot be found in the component repository: org.apache.maven.lifecycle.mapping.LifecycleMappinghex.
Hier eventuell mal nachlesen....
http://maven.apache.org/plugins/maven-compiler-plugin/non-ja...
Bringt nichts, weil nichts über gcc, avr-gcc oder generell die Bennung der Ausgabe gesagt wird.
BTW: Wie sieht denn so eine Konfiguration für avr-gcc aus die, bis auf obiges funktioniert ?
Hier ist die resultierende POM, des Projekts (allerdings nur für dieses Modul).
----- schnipp ---------------------------------------------------
<?xml version="1.0"?><project>
<parent>
<artifactId>modules</artifactId>
<groupId>de.firma.test.avr-example.avr.modules</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>de.firma.test.avr-example.avr.modules</groupId>
<artifactId>main</artifactId>
<packaging>uexe</packaging>
<name>main.hex</name>
<version>1.0-SNAPSHOT</version>
<description>Examples to show how to use Maven on C/C++ Projects with an AVR-Compiler.</description>
<build>
<sourceDirectory>D:\temp\MavenTest2\avr\modules\main\src\main\java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>D:\temp\MavenTest2\avr\modules\main\src\test\java</testSourceDirectory>
<outputDirectory>D:\temp\MavenTest2\avr\modules\main\target\classes</outputDirectory>
<testOutputDirectory>D:\temp\MavenTest2\avr\modules\main\target\test-classes</testOutputDirectory>
<resources>
<resource>
<directory>D:\temp\MavenTest2\avr\modules\main\src\main\resources</directory>
</resource>
</resources>
<testResources>
...
</testResources>
<directory>D:\temp\MavenTest2\avr\modules\main\target</directory>
<finalName>main-1.0-SNAPSHOT</finalName>
<pluginManagement>
<plugins>
...
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<extensions>true</extensions>
<configuration>
<compilerStartOptions>
<compilerStartOption></compilerStartOption>
</compilerStartOptions>
<sources>
<source>
<directory>../../../modules/main/src</directory>
<fileNames>
<fileName>hello.c</fileName>
</fileNames>
</source>
<source>
<directory>../../../modules/main/include</directory>
</source>
</sources>
<linkerStartOptions>
<linkerStartOption></linkerStartOption>
</linkerStartOptions>
<compilerProvider>generic</compilerProvider>
<compilerExecutable>avr-gcc</compilerExecutable>
<linkerExecutable>avr-gcc</linkerExecutable>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
...
</repositories>
<pluginRepositories>
...
</pluginRepositories>
<reporting>
<outputDirectory>target/site</outputDirectory>
</reporting>
<properties>
<maven.native.compiler.name>tools/avr-gcc.exe</maven.native.compiler.name>
<commonCompilerOptions></commonCompilerOptions>
<native.source.dir>../../../modules/main</native.source.dir>
</properties>
</project>
----- schnapp ---------------------------------------------------
Gruß
Björn Schorre
- 19 Feb 2009, 12:17 pm
-
Björn SchorreThe company name is only visible to registered members.Re^3: Maven2 und Native Maven Plugin für HEX-Files
Hallo,
so, nach einigem Probieren hier nun die Lösung. Vielleicht ist sie auch irgendwann im Plugin mit drin ...
In der Datei maven-native\native-maven-plugin\src\main\resources\META-INF\plexus\components.xml muss der folgende Abschnitt eingetragen werden:
----- schnipp ---------------------------------------------------
<!--
| native hex
-->
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>hex</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<phases>
<initialize>org.codehaus.mojo:native-maven-plugin:initialize</initialize>
<generate-sources></generate-sources>
<process-sources></process-sources>
<compile>
org.codehaus.mojo:native-maven-plugin:compile,
org.codehaus.mojo:native-maven-plugin:link
</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package></package>
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
<deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>hex</role-hint>
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
<configuration>
<type>hex</type>
<extension>hex</extension>
<includesDependencies>true</includesDependencies>
</configuration>
</component>
----- schnapp ---------------------------------------------------
Gruß
Björn Schorre
- 20 Feb 2009, 11:08 am
-
Karl Heinz Marbaise Premium Member Group moderatorThe company name is only visible to registered members.Re^4: Maven2 und Native Maven Plugin für HEX-Files
Hallo,
was mir wohl auffält, ist das viele absolute Pfade angegeben sind.
Ich glaube, dass es besser ist die Angaben in der Form zu machen:
${basedir}/....
oder
${project.builddirectory} (ist immer target) Verzeichnis....
Da sonst die Konfiguration ja nur an einem Platz funktioniert...
Auch die Include Angaben für den C-Compiler würde ich genauso aufbauen....
Wenn man auf der Kommandozeile mit GCC arbeitet gibt man ja auch -I . -I include etc. an und damit bezieht man sich auf das aktuelle Verzeichnis....
MfG
Karl Heinz Marbaise
- 20 Feb 2009, 11:25 am
