Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #13460 > unrolled thread

[maven-plugin¨] Arrays einlesen

Started byPeter Müller <invalid@invalid.invalid>
First post2023-10-15 19:19 +0200
Last post2023-10-16 20:00 +0200
Articles 7 — 2 participants

Back to article view | Back to de.comp.lang.java


Contents

  [maven-plugin¨] Arrays einlesen Peter Müller <invalid@invalid.invalid> - 2023-10-15 19:19 +0200
    Re: [maven-plugin] Arrays einlesen Peter Müller <invalid@invalid.invalid> - 2023-10-15 19:37 +0200
    Re: [maven-plugin¨] Arrays einlesen Patrick Roemer <sangamon@netcologne.de> - 2023-10-15 22:06 +0200
      Re: [maven-plugin¨] Arrays einlesen Peter Müller <invalid@invalid.invalid> - 2023-10-15 22:44 +0200
        Re: [maven-plugin¨] Arrays einlesen Patrick Roemer <sangamon@netcologne.de> - 2023-10-16 12:57 +0200
          Re: [maven-plugin¨] Arrays einlesen Peter Müller <invalid@invalid.invalid> - 2023-10-16 14:31 +0200
            Re: [maven-plugin¨] Arrays einlesen Patrick Roemer <sangamon@netcologne.de> - 2023-10-16 20:00 +0200

#13460 — [maven-plugin¨] Arrays einlesen

FromPeter Müller <invalid@invalid.invalid>
Date2023-10-15 19:19 +0200
Subject[maven-plugin¨] Arrays einlesen
Message-ID<kp2l8sFagsuU1@mid.individual.net>
Ich will ein Maven-Plugin verschiedene Werte einlesen. Der folgende Code 
gibt aber nur "ddd" aus.


             <plugin>
                 <groupId>com.peter</groupId>
                 <artifactId>my-plugin</artifactId>
                 <version>1.0.10-SNAPSHOT</version>
                 <executions>
                     <execution>
                         <phase>validate</phase>
                         <goals>
                             <goal>myGoal</goal>
                         </goals>
                         <inherited>false</inherited>
                         <configuration>
                              <hellos>
                                  <hello>aaa</hello>
                                  <hello>bbb</hello>
                              </hellos>
                              <hellos>ccc</hellos>
                              <hellos>ddd</hellos>
                         </configuration>
                     </execution>

                 </executions>
             </plugin>

Ich habe verschiedene Sachen ausprobiert, dies ist der aktuelle Code:

@Mojo(name = "myGoal")
public class MyPlugin extends AbstractMojo {

     // (property = "hellos")

     @Parameter(property = "hellos")
     private String[] hellos;

     @Override
     public void execute() throws MojoExecutionException {
         getLog().info("*****************************************");
         getLog().info("*****************************************");
         getLog().info("Hello, world.");
         for (String hello : hellos) {
             getLog().info(hello);
         }
         getLog().info("*****************************************");
         getLog().info("*****************************************");
     }

     public void setHellos(String[] hellos) {
         this.hellos = hellos;
         getLog().info("*****************************************");
         getLog().info("*****************************************");
         getLog().info("Hallo, Welt.");
         for (String hello : hellos) {
             getLog().info(hello);
         }
         getLog().info("*****************************************");
         getLog().info("*****************************************");
     }
}

[toc] | [next] | [standalone]


#13461 — Re: [maven-plugin] Arrays einlesen

FromPeter Müller <invalid@invalid.invalid>
Date2023-10-15 19:37 +0200
SubjectRe: [maven-plugin] Arrays einlesen
Message-ID<kp2mbdFamvdU1@mid.individual.net>
In reply to#13460
Ich meinte, dass ich ein Maven-Plugin schreiben möchte, mit dem ich 
verschiedene Werte einlesen kann.

[toc] | [prev] | [next] | [standalone]


#13462

FromPatrick Roemer <sangamon@netcologne.de>
Date2023-10-15 22:06 +0200
Message-ID<ughgnf$1lbkj$1@newsreader4.netcologne.de>
In reply to#13460
Responding to Peter Müller:
> Ich will ein Maven-Plugin verschiedene Werte einlesen. Der folgende Code
> gibt aber nur "ddd" aus.

https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Mapping_Collections_and_Arrays

Funktioniert das? Was fehlt Dir bei diesem Ansatz?

>       public void setHellos(String[] hellos) {
>           this.hellos = hellos;
>           getLog().info("*****************************************");
>           getLog().info("*****************************************");
>           getLog().info("Hallo, Welt.");
>           for (String hello : hellos) {
>               getLog().info(hello);
>           }
>           getLog().info("*****************************************");
>           getLog().info("*****************************************");
>       }
> }

Was ist die Logging-Ausgabe? (Kann man das Logging ggfs. 
erweitern/verbessern?) Wie oft/wann wird #setHellos() demzufolge aufgerufen?

[toc] | [prev] | [next] | [standalone]


#13463

FromPeter Müller <invalid@invalid.invalid>
Date2023-10-15 22:44 +0200
Message-ID<kp318oFcl0fU1@mid.individual.net>
In reply to#13462
Eben gerade habe ich festgestellt, dass wenn die Zeilen

                              <hellos>ccc</hellos>
                              <hellos>ddd</hellos>

weg sind, dass es dann funktioniert. Ich hatte schon verschiedene Sachen 
ausprobiert und nichts hat geholfen. Jetzt funktioniert es plötzlich. 
Map funktioniert auch.
Aber ich habe keine Ahnung wie man es anstellt, dass (optionale) 
Childtags ausgewertet können.

[toc] | [prev] | [next] | [standalone]


#13464

FromPatrick Roemer <sangamon@netcologne.de>
Date2023-10-16 12:57 +0200
Message-ID<ugj4u1$1md1u$1@newsreader4.netcologne.de>
In reply to#13463
Responding to Peter Müller:
> Eben gerade habe ich festgestellt, dass wenn die Zeilen
> 
>                                <hellos>ccc</hellos>
>                                <hellos>ddd</hellos>
> 
> weg sind, dass es dann funktioniert.

Es funktioniert genau wie zuvor, das letzte "hellos"-Element dürfte 
"gewinnen". #setHellos() sollte dafür nicht benötigt werden.

> Aber ich habe keine Ahnung wie man es anstellt, dass (optionale)
> Childtags ausgewertet können.

Was genau bedeutet das, und wie hängt das mit dem vorherigen Beispiel 
zusammen, in dem eine Collection (bzw. eben ein Array) als Parameter 
eingelesen wird?

Die Doku[1] ist tatsächlich nicht besonders aussagekräftig/detailliert 
bzgl. optionaler Werte. Fehlende Config-Einträge für Toplevel-Parameter 
mit "required = false" dürften aber schlicht das zugehörige Feld auf dem 
initialen Wert (z.B. null) belassen, bzw., falls angegeben, auf den Wert 
von "defaultValue" setzen.

Ob/wie optionale Felder in komplexen Parametern unterstützt werden, sehe 
ich auf Anhieb nicht, da müsste man evtl. wirklich experimentieren 
und/oder nach Dokumentation aus dritter Hand graben.

[1] 
https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Configuring_Parameters

[toc] | [prev] | [next] | [standalone]


#13465

FromPeter Müller <invalid@invalid.invalid>
Date2023-10-16 14:31 +0200
Message-ID<kp4oojFm8c8U1@mid.individual.net>
In reply to#13464
Patrick Roemer schrieb:
> Responding to Peter Müller:
>> Eben gerade habe ich festgestellt, dass wenn die Zeilen
>>
>>                                <hellos>ccc</hellos>
>>                                <hellos>ddd</hellos>
>>
>> weg sind, dass es dann funktioniert.
> 
> Es funktioniert genau wie zuvor, das letzte "hellos"-Element dürfte 
> "gewinnen". #setHellos() sollte dafür nicht benötigt werden.
> 
>> Aber ich habe keine Ahnung wie man es anstellt, dass (optionale)
>> Childtags ausgewertet können.
> 
> Was genau bedeutet das, und wie hängt das mit dem vorherigen Beispiel 
> zusammen, in dem eine Collection (bzw. eben ein Array) als Parameter 
> eingelesen wird?

Das hat mit dem Beispiel noch nichts zu tun, außer dass es eine Vorstufe 
für verschachtelte Tags sind, wie z.B. bei:

         <configuration>
           <tiere>
             <saeugetiere>
                 <hoehereSaeugetiere>
                     <raubtiere>
                         <hunde>
                             ...
                         </hunde>
                     </raubtiere>
                 </hoehereSaeugetiere>
             </saeugetiere>
           </tiere>
         </configuration>
> 

> Die Doku[1] ist tatsächlich nicht besonders aussagekräftig/detailliert 
> bzgl. optionaler Werte. Fehlende Config-Einträge für Toplevel-Parameter 
> mit "required = false" dürften aber schlicht das zugehörige Feld auf dem 
> initialen Wert (z.B. null) belassen, bzw., falls angegeben, auf den Wert 
> von "defaultValue" setzen.
> 

Ich habe sogar ein Mavenbuch. Da steht aber kein Hinweis, wie man die 
Verschachtelung im Griff bekommt.

[toc] | [prev] | [next] | [standalone]


#13466

FromPatrick Roemer <sangamon@netcologne.de>
Date2023-10-16 20:00 +0200
Message-ID<ugjtoa$1mvat$1@newsreader4.netcologne.de>
In reply to#13465
Responding to Peter Müller:
> Das hat mit dem Beispiel noch nichts zu tun, außer dass es eine Vorstufe
> für verschachtelte Tags sind, wie z.B. bei:
> 
>           <configuration>
>             <tiere>
>               <saeugetiere>
>                   <hoehereSaeugetiere>
>                       <raubtiere>
>                           <hunde>
>                               ...
>                           </hunde>
>                       </raubtiere>
>                   </hoehereSaeugetiere>
>               </saeugetiere>
>             </tiere>
>           </configuration>

Das Beispiel ist so, für ein Buildsystem nicht besonders realitätsnah, 
unvollständig, mit großer Schachtelungstiefe, dafür ohne Verzweigung, 
und insbesondere ohne eine Datenstruktur, auf die der Spaß gemappt 
werden soll, nicht richtig hilfreich.

Aber ich vermute mal, es wird halt aufs Mapping von "complex objects" 
mit Feldern von Collections herauslaufen. Das scheint bei Maven selber 
nicht hinreichend dokumentiert. Vielleicht bei der darunterliegenden 
Mapping-Bibliothek (Sisu? Plexus? Guice? Keine Ahnung...), aber da ist 
es vermutlich einfacher, selber zu experimentieren, als das zu finden. 
Viel Spaß! :)

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.java


csiph-web