Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13460 > unrolled thread
| Started by | Peter Müller <invalid@invalid.invalid> |
|---|---|
| First post | 2023-10-15 19:19 +0200 |
| Last post | 2023-10-16 20:00 +0200 |
| Articles | 7 — 2 participants |
Back to article view | Back to de.comp.lang.java
[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
| From | Peter Müller <invalid@invalid.invalid> |
|---|---|
| Date | 2023-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]
| From | Peter Müller <invalid@invalid.invalid> |
|---|---|
| Date | 2023-10-15 19:37 +0200 |
| Subject | Re: [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]
| From | Patrick Roemer <sangamon@netcologne.de> |
|---|---|
| Date | 2023-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]
| From | Peter Müller <invalid@invalid.invalid> |
|---|---|
| Date | 2023-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]
| From | Patrick Roemer <sangamon@netcologne.de> |
|---|---|
| Date | 2023-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]
| From | Peter Müller <invalid@invalid.invalid> |
|---|---|
| Date | 2023-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]
| From | Patrick Roemer <sangamon@netcologne.de> |
|---|---|
| Date | 2023-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