Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

1

16.11.2015, 15:11

Maven Dependencies Vererben

Hallo,
habe gerade ein Problem bei der Vererbung von dependencies in maven bei multimodulprojekten.
Der Parent File sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.meinefirma.meinprojekt</groupId>
  <artifactId>Multiprojekt</artifactId>
  <version>1.0</version>
<packaging>pom</packaging>
  <modules>
    <module>MvnSelenium</module>
  </modules>

 <dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.47.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>


Das Child File (meiner Meinung nach) so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.meinefirma.meinprojekt</groupId>
  <artifactId>MvnSelenium</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>MvnSelenium</name>
    
  <parent>
    <groupId>de.meinefirma.meinprojekt</groupId>
    <artifactId>Multiprojekt</artifactId>
    <version>1.0</version>
        <relativePath>../pom.xml</relativePath>
  </parent>

<dependencies>
  <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
  </dependency>
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
  </dependency>
</dependencies>

</project>


Führe ich nun mvn install aus im Child-Ordner
bekomme ich die Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
C:\Users\wakr\Desktop\5. Semester Praxisphase\Testautomatisierung\Know_How\Übung
 Maven\Multiprojekt\MvnSelenium>mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethrea
ded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MvnSelenium 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MvnSeleniu
m ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Users\wakr\Desktop\5. Semester Pra
xisphase\Testautomatisierung\Know_How\▄bung Maven\Multiprojekt\MvnSelenium\src\m
ain\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ MvnSelenium -
--
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Mv
nSelenium ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Users\wakr\Desktop\5. Semester Pra
xisphase\Testautomatisierung\Know_How\▄bung Maven\Multiprojekt\MvnSelenium\src\t
est\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ MvnSe
lenium ---
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b
uild is platform dependent!
[INFO] Compiling 2 source files to C:\Users\wakr\Desktop\5. Semester Praxisphase
\Testautomatisierung\Know_How\▄bung Maven\Multiprojekt\MvnSelenium\target\test-c
lasses
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] C:\Users\wakr\Desktop\5. Semester Praxisphase\Testautomatisierung\Know_H
ow\▄bung Maven\Multiprojekt\MvnSelenium\src\test\java\integrationstest\SeleniumS
impleTest.java:[55,9] error: try-with-resources is not supported in -source 1.5
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.025 s
[INFO] Finished at: 2015-11-16T15:09:43+01:00
[INFO] Final Memory: 10M/303M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
5.1:testCompile (default-testCompile) on project MvnSelenium: Compilation failur
e
[ERROR] C:\Users\wakr\Desktop\5. Semester Praxisphase\Testautomatisierung\Know_H
ow\▄bung Maven\Multiprojekt\MvnSelenium\src\test\java\integrationstest\SeleniumS
impleTest.java:[55,9] error: try-with-resources is not supported in -source 1.5
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
eption


Wo ist mein Denkfehler? Wie werden Dependencies in Maven richtig vererbt ?
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

16.11.2015, 15:39

Dein Fehler hat nichts mit Dependencies zu tun, sondern mit deinem zum Compilen verwendeten JDK (1.5).
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

16.11.2015, 15:43

Den Fehler könntest Du auch in Eclipse nachstellen, wenn Du das Compiler-Level auf Java 1.5 stellst. :)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

4

17.11.2015, 08:54

Java 1.5


Aber warum? Ich meine ich hab die JAVA HOME- Umgebungsvariable auf java 1.8 gestellt ...

Die Lösung war es in der pom folgende property zu definieren:

Quellcode

1
2
3
4
<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>


Frage bleibt dennoch warum er 1.5 verwendet...
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

17.11.2015, 09:06

Java 1.5


Aber warum? Ich meine ich hab die JAVA HOME- Umgebungsvariable auf java 1.8 gestellt ...

Die Lösung war es in der pom folgende property zu definieren:

Quellcode

1
2
3
4
<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>


Frage bleibt dennoch warum er 1.5 verwendet...

Weil das der Standardwert ist: http://maven.apache.org/plugins/maven-co…ojo.html#source
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

17.11.2015, 09:10

Aber warum? Ich meine ich hab die JAVA HOME- Umgebungsvariable auf java 1.8 gestellt ...
Der Compiler ist in der Lage verschiedene Level zu wählen, damit man auch Sources passend zu einer speziellen Zielplattform kompilieren kann. Ein Java 1.8 JDK kann also ganz prima auch für 1.4 kompilieren und nimmt damit natürlich keine Java 1.7 Features als valide an. Wie Nimelrian schon verlinkt hat, ist das Default-Compiler-Level von Maven aber Java 1.5. Wie Du das lösen kannst, hast Du ja schon gefunden :)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (17.11.2015, 10:01)


Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

7

17.11.2015, 14:05

Ok bis hierhin funktioniert alles.
Nun folgendes weitere Problem:

Das Modul was ich in Maven anlege ist ein Child-Modul von einem Parent-Modul
Im Child-Modul brauche ich nur 2 Abhängigkeiten in der pom.xml zu definieren:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  <parent>
    <groupId>de.meinefirma.meinprojekt</groupId>
    <artifactId>Multiprojekt</artifactId>
    <version>1.0</version>
        <relativePath>../pom.xml</relativePath>
  </parent>

<dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
    <!-- KEINE VERSION ODER SCOPE ANGABE -->
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
       <!-- KEINE VERSION ODER SCOPE ANGABE -->
    </dependency>
  </dependencies>


Im Parent-Modul habe ich die aufgeführten Abhängigkeiten also junit und selenium beide im dependencyManagement definiert und Versionen sowie scope zugewiesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<packaging>pom</packaging>
  <modules>
    <module>MvnSelenium</module>
  </modules>
<dependencyManagement>
 <dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.47.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<!-- VIELE VIELE VIELE WEITERE DEPENDENCIES 
       DIE ZU FEHLERN FÜHREN -->
</dependencyManagement>


Leider sind beim Parent-Pom noch viele viele weitere Dependencies angegeben, die ich aber nicht benötige.
Viele davon lösen dann beim Starten des Projektes Fehler aus OBWOHL ICH SIE NICHT IN DER CHILD-POM.xml angegeben habe !!!
Lösche ich die anderen Abhängigkeiten in der Parent-pom.xml dann geht das Projekt, bleiben diese bestehen dann führt es zu Fehlermeldungen.

Meine Frage:
Muss ich die anderen Dependencies aus der Vererbung explizit ausschließen und wenn ja, wie ?
Wie kommt es zu Fehlermeldungen obwohl die anderen Dependencies eigentlich garnicht im Child-Modul gebraucht und angegeben werden?
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

17.11.2015, 14:56

Ich würde an der Stelle das Gesamtkonstrukt hinterfragen. Entweder ist die Dependency wirklich global für alle immer da oder sie gehört da gar nicht hinein. Ich glaube bisher kein Projekt gehabt zu haben, wo die Dependency-Hierarchie so aussah.

Du kannst spezielle Dependencies auch per "provided"-scope auf sowas ähnliches wie "ignore" stellen. Allerdings finde ich wie gesagt das Gesamtkonstrukt fraglich.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (17.11.2015, 15:02)


Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

9

17.11.2015, 14:59

Ich würde an der Stelle das Gesamtkonstrukt hinterfragen. Entweder ist die Dependency wirklich global für alle immer da oder sie gehört da gar nicht hinein. Ich glaube bisher kein Projekt gehabt zu haben, wo die Dependency-Hierarchie so aussah.


Also ich habe eine zentrale pom.xml die 100 Dependencies (mit Version und Scope) für 10 Unterprojekte angibt.
Unterprojekt Nr 4. braucht nur 2 Dependencies welche er ohne Version und ohne Scope angibt.

Unterprojekt Nr 4. bekommt Fehlermeldungen ausgelöst durch die anderen 98 Dependencies (speziell 3 davon), welche aber garnicht angegeben werden.

Das ist so das was ich nicht verstehe.
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

17.11.2015, 15:04

Ich bin immer noch der Meinung, dass die globalen Parent-Dependencies falsch sind und in die jeweiligen Unterprojekte hinein gehören. Es macht schließlich keinen Sinn zu behaupten, dass alle unterliegenden Projekte 100 Dependencies brauchen, wenn das gar nicht der Fall ist.
Du kannst dennoch über den Tipp mit dem "provided"-Scope spezielle Dependencies (also die problematischen) mehr oder minder "ausschließen".
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige