Software Configuration Management

Software Configuration Management

Posts 1-5 of 5
  • Björn Schorre
    Björn Schorre
    The 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
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The 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
  • Björn Schorre
    Björn Schorre
    The 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
  • Björn Schorre
    Björn Schorre
    The 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
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The 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