Eclipse nie widzi klas z projektów w zależnościach przy hierarchicznym projekcie

0

Mam projekt w Mavenie. Generalna struktura jest taka:

  • common,
  • javame, który korzysta z common,
  • android-parent, który korzysta z common,
  • android/android, który dziedziczy z android-parent,
  • android/android-it (instrumentation tests), który dziedziczy z android-parent,

Problem jest taki, że Eclipse nie widzi mi w module android-it klas z modułu android. A dokładniej to w HelloAndroidActivityTest nie widzi mi klasy HelloAndroidActivity. Ma ktoś pomysł jak to rozwiązać? Załączam spakowany projekt z wyciętymi klasami z common, nie powinno mieć to znaczenia w tym problemie.

I pytanie dodatkowe: jako korzystacie z Mavena w IDE, w szczególności w Eclipse? Jakich wtyczek używacie? Z tego co wiem są 3 opcje:

  • maven-eclipse-plugin + konfiguracja projektu za pomocą polecenia mvn,
  • m2eclipse,
  • q4eclipse czy coś takiego, ale to jest podobno kiepskie;

Aktualnie chodzi mi o jakieś rozwiązanie, które dobrze integruje Mavena, Eclipse, JavęME i Androida, tzn żebym mógł kompilować projekty zarówno poprzez polecenie mvn jak i automatycznie Eclipsem i żebym mógł odpalać testy i MIDlety/ Activity zarówno z linii komend jak i z poziomu Eclipse.

1

Jeśli to jest projekt Eclipse, to ja jakoś nie widzę plików .project i .classpath. Generalnie ja używam m2e w wersji 1.0.x (http://eclipse.org/m2e/, wcześniej nazywało się to m2eclipse tzw. legacy). W Eclipse zakładasz gotowy nowy project z obsługą Maven: File->New->Other->Maven->Maven Project albo konfigurujesz już istniejący projekt dodając mu obsługę (naturę) Maven wywołując opcję z menu podręcznego: Configure->Convert to Maven Project (nie wiem czy tylko ja mam tak, ale gdy z tego korzystam, to i tak muszę ręcznie zmieniać strukturę katalogów pod Maven). Co do integracji ADT i m2e to potrzebujesz chyba jeszcze tego: http://rgladwell.github.com/m2e-android.

0

Jakimś cudem zaczęło widzieć klasy w android-it, ale mam teraz inny problem.

  1. Mnóstwo błędów typu Error preverifiyng. Eclipse jakoś niezbyt dobrze integruje się z Mavenem i grzebie sobie w swoim katalogu .mtj.tmp zamiast w utworzonym prze Mavena katalogu target. Nie jestem w stanie też odpalić midletów, ani nawet zwykłej klasy (a.M).
  2. Problem z Mavenem - jeśli chcę odpalić midlety z poziomu Maven to muszę najpierw zrobić mvn package w katalogu nadrzędnym projektów, tzn tam gdzie jest główny POM zawierający definicje modułów i który jest dziedziczony przez pozostałe. Jeśli odpalę mvn package w katalogu javame, a potem j2me:run to nie będzie widać klas z modułu common. Maven przecież powinien najpierw budować jeśli trzeba zależne moduły. A może to jednak inaczej działa i trzeba np używać klasyfikatora SNAPSHOT?

Nowy dump projektu, tym razem z plikami eclipsowymi, wcześniej je wyciąłem bo zajmują strasznie dużo. No ale są raczej potrzebne do zdiagnozowania problemu. Link: http://w343.wrzuta.pl/plik/aktz2mAxo97/bileterka.mvn.00005

1

Udało mi się uruchomić klasę a.M. Podpiąłem sobie Twój workspace. Pierwsze co musiałem zrobić to wywołać na obu projektach common i javeme opcję z menu podręcznego Configure->Convert to Maven project. Więc nie wiem czy to tylko tak u mnie, czy w ogóle masz te projekty bez natury Mavena.

A i jeszcze jedno. Kompilator zgodny z java 1.3? Wygenerowane pliki klas zgodne z java 1.1? Pytam, bo tak widzę w tych projektach.

0

Hm, no ok. Zrobiłem to. Jednak nadal Eclipse sypie błędami.

Maven też nie działa tak jak tego od niego oczekuję. Przykładowy log:

User@User-Komputer /cygdrive/c/bileterka.mvn
$ mvn clean
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent
[INFO] common
[INFO] javame J2ME Application
[INFO] android - Parent
[INFO] android - Application
[INFO] android-it - Integration tests
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building parent 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ parent ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ common ---
[INFO] Deleting C:\bileterka.mvn\common\target
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building javame J2ME Application 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ javame ---
[INFO] Deleting C:\bileterka.mvn\javame\target
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building android - Parent 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ android-parent ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building android - Application 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ android ---
[INFO] Deleting C:\bileterka.mvn\android\android\target
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building android-it - Integration tests 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ android-it ---
[INFO] Deleting C:\bileterka.mvn\android\android-it\target
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] parent ............................................ SUCCESS [0.078s]
[INFO] common ............................................ SUCCESS [0.062s]
[INFO] javame J2ME Application ........................... SUCCESS [0.016s]
[INFO] android - Parent .................................. SUCCESS [0.000s]
[INFO] android - Application ............................. SUCCESS [0.109s]
[INFO] android-it - Integration tests .................... SUCCESS [0.016s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.936s
[INFO] Finished at: Wed Apr 04 17:54:39 CEST 2012
[INFO] Final Memory: 5M/121M
[INFO] ------------------------------------------------------------------------

User@User-Komputer /cygdrive/c/bileterka.mvn
$ cd javame

User@User-Komputer /cygdrive/c/bileterka.mvn/javame
$ mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building javame J2ME Application 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ javame ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ javame ---
[WARNING] File encoding has not been set, using platform encoding Cp1250, i.e. build is platform dependent!
[INFO] Compiling 3 source files to C:\bileterka.mvn\javame\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[2,8] cannot find symbol
symbol  : class A
location: package a
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[14,25] cannot find symbol
symbol  : class A
location: class a.M
[ERROR] \bileterka.mvn\javame\src\main\java\com\inno\onboard\SimpleMIDlet.java:[23,26] cannot find symbol
symbol  : class A
location: package a
[INFO] 3 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.988s
[INFO] Finished at: Wed Apr 04 17:54:46 CEST 2012
[INFO] Final Memory: 4M/121M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project javame: Compilation failure: Compilation failure:
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[2,8] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: package a
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[14,25] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: class a.M
[ERROR] \bileterka.mvn\javame\src\main\java\com\inno\onboard\SimpleMIDlet.java:[23,26] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: package a
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[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 read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

User@User-Komputer /cygdrive/c/bileterka.mvn/javame
$ cd ../common

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\bileterka.mvn\common\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ common ---
[WARNING] File encoding has not been set, using platform encoding Cp1250, i.e. build is platform dependent!
[INFO] Compiling 60 source files to C:\bileterka.mvn\common\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.524s
[INFO] Finished at: Wed Apr 04 17:55:00 CEST 2012
[INFO] Final Memory: 7M/121M
[INFO] ------------------------------------------------------------------------

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ cd ../javame

User@User-Komputer /cygdrive/c/bileterka.mvn/javame
$ mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building javame J2ME Application 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ javame ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ javame ---
[WARNING] File encoding has not been set, using platform encoding Cp1250, i.e. build is platform dependent!
[INFO] Compiling 3 source files to C:\bileterka.mvn\javame\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[2,8] cannot find symbol
symbol  : class A
location: package a
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[14,25] cannot find symbol
symbol  : class A
location: class a.M
[ERROR] \bileterka.mvn\javame\src\main\java\com\inno\onboard\SimpleMIDlet.java:[23,26] cannot find symbol
symbol  : class A
location: package a
[INFO] 3 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.800s
[INFO] Finished at: Wed Apr 04 17:55:06 CEST 2012
[INFO] Final Memory: 4M/121M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project javame: Compilation failure: Compilation failure:
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[2,8] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: package a
[ERROR] \bileterka.mvn\javame\src\main\java\a\M.java:[14,25] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: class a.M
[ERROR] \bileterka.mvn\javame\src\main\java\com\inno\onboard\SimpleMIDlet.java:[23,26] cannot find symbol
[ERROR] symbol  : class A
[ERROR] location: package a
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[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 read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

User@User-Komputer /cygdrive/c/bileterka.mvn/javame
$

Chcę mieć testy w JUnit 4 z adnotacjami + test JBehave (który też korzysta z Javy 1.5+), a źródła kodu produkcyjnego kompilowane do Javy 1.1, aby mogły być włączone do projektu dla JavaME.

A i jeszcze jedno. Kompilator zgodny z java 1.3? Wygenerowane pliki klas zgodne z java 1.1? Pytam, bo tak widzę w tych projektach.

Tak jest domyślnie w projektach JavaME. JavaME jest oparta na JDK 1.1. Nie wiem jakie są różnice pomiędzy językiem Java 1.1 a Java 1.3, ale pewnie niewielkie, na tyle małe, że nie ma różnicy w bajtkodzie (?).

Aktualny stan projektu, zostawiłem jedną klasę z testem do obadania (klasa Queue): http://w117.wrzuta.pl/plik/4LZ9EgP0JYl/bileterka.mvn_-_kopia

0

Tak tylko sie wtrace, ale nie jestem pewien czy javac pozwala na kompilowanie jesli target < source w ustatieniach - jestes pewien ze to dziala?
ucilala@studio:~/Playground$ javac -source 5 Test.java -target 1.1
javac: source release 5 requires target release 1.5
U mnie tak nie wolno...
Czy masz osobne ustatienia kompilatora dla scr/main/java i dla src/test/java? Czy ogolnie nic nie zrozumialem z poprzedniego posta (nie patrzylem w zrodla, 47 mb to troche przesada).

0

Źródeł jest minimalna ilość, jakieś 250 MB danych przed spakowaniem to jakiś syf z Eclipse'a.

Owszem dla source=1.5 wymusza target=1.5, podobnie dla 1.4, ale dla source=1.3 można już ustawić target=1.1.

Czy masz osobne ustatienia kompilatora dla scr/main/java i dla src/test/java

Takie jest moje zamierzenie i cos tam w pomie ustawiałem, ale nie wiem czy odniosło to jakikolwiek skutek. W Eclipse niestety nie namierzyłem jeszcze sposobu, żeby osobne foldery miały różne ustawienia source i target. W Mavenie niby to jest, ale przy kompilacji nie znajduje mi klas adnotacji (!?).

O, i jak rozwiązujecie jeszcze sprawę z kodowaniem. Maven slusznie pluje się że build jest platform dependent, no ale z tego co wyczytałem, ustawienia kodowania trzeba wklepać w każdym module osobno i dla każdego katalogu typu sources, resources, tests, etc osobno. Jest jakiś sposób żeby to nieco scentralizować (ustawić globalne wartości domyślne)?

1

Co do kodowania w Mavenie, to w każdym (chyba, bo nie wiem czy nadrzędny pom.xml wymusi to na podrzędnych) pliku pom.xml trzeba ustawić poziomu Eclipse (otwierając plik pom.xml edytorem Maven POM Editor) w na zakładce Overview w sekcji Properties: Name : project.build.sourceEncoding i Value: UTF-8. Albo bezpośrednio w pom.xml:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId></groupId>
  <artifactId></artifactId>
  <version></version>
  <name></name>
  <dependencies>
  	<dependency>
  		<groupId></groupId>
  		<artifactId></artifactId>
  		<version></version>
  	</dependency>
  </dependencies>
  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId>
  			<artifactId>maven-compiler-plugin</artifactId>
  			<version>2.3.2</version>
  			<configuration>
        		<source>1.7</source>
        		<target>1.7</target>
        		<showDeprecation>true</showDeprecation>
        		<showWarnings>true</showWarnings>
        		<executable>${JAVA_HOME}/bin/javac</executable>
        		<fork>true</fork>
    		</configuration>
  		</plugin>
  	</plugins>
  </build>
  <properties>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

W powyższym przykładzie masz przykładowo też określenie wersji kompilatora javy poprzez plugin maven-compiler-plugin (to wymusi specyficzne ustawienia projektu Eclipse w tym zakresie). Pluginy Maven dokłada się akurat z menu podręcznego (nie jak dawniej na zakładce Dependencies czyli zależności) Maven->Add Plugin.

Sprawdź jeszcze czy we właściwościach każdego projektu masz zaznaczone: Maven->Resolve dependencies from Workspace projects.

Główny (nadrzędny) pom.xml jest w jakimś projekcie?

Wydaje mi się, że wiem w czym jest problem. To co jest dobre dla Mavena, nie zawsze przełknie Eclipse z wtyczką m2e. Rozchodzi się o to, że Eclipse nie obsługuje zagnieżdżonych/hierarchicznych projektów (a taka struktura jest zalecana dla Mavena). Spróbuj zmodyfikować nadrzędny pom.xml (umieść go w jakimś projekcie Eclipse - zostaw tylko pom.xml i .project) w następujący sposób:

<?xml version="1.0" encoding="utf-8"?>
<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/xsd/maven-4.0.0.xsd'>
  <modelVersion>4.0.0</modelVersion>
  
  <groupId>com.inno.onboardcomp</groupId>
  <artifactId>parent</artifactId>
  <version>1</version>
  <packaging>pom</packaging>
  
  <modules>
    <module>../common</module>
    <module>../javame</module>
    <module>../android</module>
  </modules>
  
  <properties>
    <sourceEncoding>utf-8</sourceEncoding>
    <jbehaveVersion>3.5.4</jbehaveVersion>
  </properties>
</project>

Następnie stwórz zamiast zagnieżdżonej struktury płaską. Czyli przenieś wszystkie podprojekty (moduły) do katalogu głównego Twojego workspace. Można (a może nawet należy) również wykorzystać znacznik relativePath w pom.xml w podprojektów.

Wszystko powinno sprawnie działać do momentu, gdy będziemy chcieli użyć jakiegoś pluginu Mavena wykorzystującego właśnie tę hierarchiczną strukturę Mavena. Jak to rozwiązać (oraz część powyższych informacji) można znaleźć na stronie: https://warpedjavaguy.wordpress.com/2011/08/08/how-i-defeated-the-maven-release-plugin-in-a-flat-structured-multi-module-project/

Wibowit napisał(a)

Owszem dla source=1.5 wymusza target=1.5, podobnie dla 1.4, ale dla source=1.3 można już ustawić target=1.1.

Ale tam gdzie używasz adnotacji source musi być przynajmniej 1.5.

1

No takie coś jak poniżej w nadrzędnym pom.xml powinno działać, gdy trzeba użyć innej wersji kompilatora dla testów, a innej wersji dla normalnych źródeł:

<build>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId>
  			<artifactId>maven-compiler-plugin</artifactId>
  			<version>2.3.2</version>
  			<executions>
                    <execution>
                        <id>java-1.1-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.1</source>
                            <target>1.1</target>
                        </configuration>
                    </execution>
                    <execution>
                        <id>java-1.6-compile</id>
                        <phase>process-test-sources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                        </configuration>
                    </execution>
                </executions>
  		</plugin>
  	</plugins>
  </build>

Do lektury:
http://docs.codehaus.org/display/MAVENUSER/Compile+and+Test+with+Different+JDK+Versions
http://stackoverflow.com/questions/1213897/different-maven-compiler-versions-for-test-and-main

Zapytam z ciekawości - jak postępy?

0

No takie coś jak poniżej w nadrzędnym pom.xml powinno działać, gdy trzeba użyć innej wersji kompilatora dla testów, a innej wersji dla normalnych źródeł:

Dzięki. Zdaje się że działa, ale...
Mam w pomie ustawionego JUnita 4.10, a w testach używam adnotacji @Test (dawno nie testowałem, więc mogę robić jakiś śmieszny błąd). Przy odpalaniu mvn test jednak nie są rozpoznawane jako testy metody mające adnotację @org.junit.Test, ale nie mające nazwy zaczynającej się od test.

Aktualnie projektu jeszcze nie spłaszczyłem - jak na razie się poddałem, bo z Mavena jestem początkujący. Projekt i tak jest na kilka miesięcy zamrażany - firma produkująca bileterki nie kwapi się do udostępnienia takowej do testów, więc jak nie ma bileterki to jej nie oprogramuję. Będę zajmował się czymś innym, ale i tak, jeśliby udało mi się ustawić projekt od początku do końca, to potem byłoby łatwiej.

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ common ---
[INFO] Deleting C:\bileterka.mvn\common\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.284s
[INFO] Finished at: Thu Apr 05 17:27:01 CEST 2012
[INFO] Final Memory: 2M/121M
[INFO] ------------------------------------------------------------------------

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---
[debug] execute contextualize
[INFO] Using 'utf-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\bileterka.mvn\common\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ common ---
[INFO] Compiling 60 source files to C:\bileterka.mvn\common\target\classes
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (javame-main-compile) @ common ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (javase-test-compile) @ common ---
[INFO] Compiling 11 source files to C:\bileterka.mvn\common\target\test-classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ common ---
[debug] execute contextualize
[INFO] Using 'utf-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\bileterka.mvn\common\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ common ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ common ---
[INFO] Surefire report directory: C:\bileterka.mvn\common\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.inno.onboardcomp.common.emar.requests.SendCashRegisterIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendCompanyIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendCurrentRideIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendTicketsRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.responses.parsers.RootResponseParserTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.queue.QueueTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.Adler32Test
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.Base64Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.inno.onboardcomp.common.util.Crc32Test
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.LowLevelParserTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.MyBase16Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec

Results :

Failed tests:   warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCashRegisterIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCompanyIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCurrentRideIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendTicketsRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.responses.parsers.RootResponseParserTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.queue.QueueTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.Adler32Test
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.Crc32Test
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.LowLevelParserTest

Tests run: 11, Failures: 9, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.299s
[INFO] Finished at: Thu Apr 05 17:27:06 CEST 2012
[INFO] Final Memory: 12M/157M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project common: There are test failures.
[ERROR]
[ERROR] Please refer to C:\bileterka.mvn\common\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[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 read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ common ---
[INFO] Deleting C:\bileterka.mvn\common\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.281s
[INFO] Finished at: Thu Apr 05 17:28:16 CEST 2012
[INFO] Final Memory: 2M/121M
[INFO] ------------------------------------------------------------------------

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building common 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (javame-main-compile) @ common ---
[INFO] Compiling 60 source files to C:\bileterka.mvn\common\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---
[debug] execute contextualize
[INFO] Using 'utf-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\bileterka.mvn\common\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ common ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (javase-test-compile) @ common ---
[INFO] Compiling 11 source files to C:\bileterka.mvn\common\target\test-classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ common ---
[debug] execute contextualize
[INFO] Using 'utf-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\bileterka.mvn\common\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ common ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ common ---
[INFO] Surefire report directory: C:\bileterka.mvn\common\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.inno.onboardcomp.common.emar.requests.SendCashRegisterIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendCompanyIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendCurrentRideIdRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.requests.SendTicketsRequestTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.emar.responses.parsers.RootResponseParserTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.queue.QueueTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.Adler32Test
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.Base64Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.inno.onboardcomp.common.util.Crc32Test
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.LowLevelParserTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.inno.onboardcomp.common.util.MyBase16Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec

Results :

Failed tests:   warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCashRegisterIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCompanyIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendCurrentRideIdRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.requests.SendTicketsRequestTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.emar.responses.parsers.RootResponseParserTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.queue.QueueTest
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.Adler32Test
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.Crc32Test
  warning(junit.framework.TestSuite$1): No tests found in com.inno.onboardcomp.common.util.LowLevelParserTest

Tests run: 11, Failures: 9, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.294s
[INFO] Finished at: Thu Apr 05 17:28:21 CEST 2012
[INFO] Final Memory: 12M/157M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project common: There are test failures.
[ERROR]
[ERROR] Please refer to C:\bileterka.mvn\common\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[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 read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

User@User-Komputer /cygdrive/c/bileterka.mvn/common
$

Pierwszy mvn test jest z konfiguracją którą podaleś w swoim ostatnim poście w tym wątku. Zaniepokoił mnie ten fragment:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ common ---
[INFO] Compiling 60 source files to C:\bileterka.mvn\common\target\classes
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (javame-main-compile) @ common ---
[INFO] Nothing to compile - all classes are up to date

Zmieniłem więc:

[phase]compile[/phase]

Na:

[phase]process-sources[/phase]

I jak widać zmieniło się na:

[INFO] --- maven-compiler-plugin:2.3.2:compile (javame-main-compile) @ common ---
[INFO] Compiling 60 source files to C:\bileterka.mvn\common\target\classes

Czyli teraz wygląda na poprawne, przynajmniej jak dla mnie.

Niby jeszcze nie spłaszczyłem projektu, ale Maven powinien dobrze działać dla hierarchicznego. Tymczasem nadal budowanie projektu działa źle. Tylko jeśli zrobię mvn package z poziomu parenta to mi się utworzy dobra para jad/jar w module javame. Żeby mi działało dobrze kompilowanie/ paczkowanie etc z poziomu modułu javame, po wcześniejszym mvn clean na parencie, to muszę najpierw zrobić mvn install w module common. Albo ja coś robię źle, albo w którejś wtyczce musi być błąd który psuje zależności.

0

Co do pomijania testów z adnotacją @Test to może coś bruździ plugin Mavena maven-surefire-plugin? Jak nie potrzebujesz to usuń. Co Cię zaniepokoiło? Że nie ma nic do kompilacji, bo wszystko jest aktualne? Zasadniczo bawisz się obecnie z Mavenem w każdym module osobno - to chyba nie tędy droga? Powinno wystarczyć wywołanie nadrzędnego pom.xml i wszystko powinno się do spodu wykonać.

0

Struktura hierarchiczna to jedna z zasad Mavena. Ale Eclipse nie łyknie tego. Zawsze można używać Mavena z linii poleceń. Z adnotacjami @Test to albo coś w konfiguracji wtyczki maven-surefire-plugin albo nie wymuszasz odpowiedniej wersji kompilatora dla testów - wskazówkę jak to rozwiązać masz w jednym z powyższych moich postów. Nie wklejaj logu z mvn clean, który kończy się sukcesem. Wklejaj tylko te kawałki z którymi jest problem. Potem nie wiadomo o co chodzi i gdzie. Np. nie wiem o jakich ustawieniach piszesz w ostatnim komentarzu - nie za bardzo rozumiem co maiłeś tam na myśli.

0

Z testami do modułu common sobie poradziłem. Rozszerzałem klasę TestCase, więc JUnit pewnie sobie pomyślał, że testy są robione pod JUnit 3. Przerobiłem na POJO tak jak ma być i JUnit 4 to łyka.

Ale nadal są problemy nie do przeskoczenia, które w zasadzie burzą cały misterny plan. Jak na razie i tak będzie freeze projektu (z powodu zewnętrznej firmy), może po powrocie do niego będę coś więcej probował.

0

Z ciekawości odpaliłem Mavenową wersję projektu (bo była jeszcze nieMavenowa) w NetBeansie i działa toto dużo lepiej. NetBeans nie próbuje być tak sprytny jak Eclipse i jego rola w budowaniu kodu wynikowego sprowadza się zwykle do odpalania komend Mavenowych, co powoduje że jest dużo mniej kombinacji z konfiguracją. NetBeans radzi sobie z kodem produkcyjnym w niższej wersji niż kod testujący, nie preweryfikuje sam ani nie składa sam w paczki kodu, deleguje to do Mavena, więc sporo problemów znikło. Wygląda na to, że jeśli wrócę do projektu i założenia się nie zmienią, to będę robił to pod NetBeansem.

0

A mógłbyś podać jakieś szczegóły? Bo obsługa komend np. maven clean, maven compile też jest przyjemna w Eclipse. Udręką za to jest w Eclipse sytuacja gdy trzeba zaktualizować konfigurację pom.xml, bo doinstalowaliśmy m2e-wtp, albo jakąś inną dodatkową wtyczkę wspomagającą m2e (albo niezgodność wersji samej wtyczki ze starszymi wersjami, z komponentami z STS lub JBoss). W/g mnie jest też uboższy interfejs xml-owy obecnej wersji wtyczki m2e w porównaniu do czasów, gdy wtyczka była rozwijana pod patronatem Sonatype.

0

Przede wszystkim budowanie w przypadku JavaME albo Androida znacznie się różni od budowania zwykłych JARów, WARów, etc W JavaME/ Android nie ma classpath, jest pakowanie wszystkiego do jednego JARa, podpisywanie, preweryfikacja, etc i Eclipse olewa Mavenowe polecenia służące do tego i zamiast tego odpala własne procedury na własnych strukturach folderów, co powoduje problemy. W Eclipse kiepsko też działa podmienianie klas. Gdy zaimportowałem projekt common do projektu javame jako zależność, i te projekty zawierały klasę o identycznej pełnej nazwie (tzn nazwa paczki + nazwa klasy) to Eclipse brał klasę z common zamiast z javame, mimo ustawienia w konfiguracji projektu, że ma być inaczej. Kolejna sprawa to to, że chyba nie da się zmusić Eclipse żeby poprawnie widział projekt, w którym kod produkcyjny jest dla Javy 1.1/ 1.3, a kod testujący dla Javy 1.6.

Widziałem opinie, że ludzie narzekają, że NetBeans zachowuje się w przede wszystkim jako nakładka na Mavena jeśli chodzi o proces budowania aplikacji, ale z drugiej strony czasem, czyli np w moim przypadku, jest to jedyne sensowne wyjście. Eclipse próbuje ominąć Mavena, szybko kompilując zmiany w jakiś sprytny sposób, ale jak widać takie podejście przerasta autorów wtyczek, albo po prostu mój projekt jest zbyt nietypowy - choć w to w sumie wątpię, bo sam Maven sobie radzi z moim problemem.

0

Moim zdaniem kazda kolejna wersja mavenowego pluginu dla eclipse jest coraz gorsza. Teraz wymyslili jakies wlasne mapowanie pluginow ktore zasmieca mi pom.xml. IDEA dziala tak jak NB, czyli jest nakladka na polecenia mavenowe, i wszystko gra, bez niespodzianek.

0
ucilala napisał(a)

Teraz wymyslili jakies wlasne mapowanie pluginow ktore zasmieca mi pom.xml.

O jakie mapowanie Ci chodzi? Możesz podać jakiś przykład?

0
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>buildnumber-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>hgchangeset</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.zeroturnaround</groupId>
                                    <artifactId>jrebel-maven-plugin</artifactId>
                                    <versionRange>[1.0.7,)</versionRange>
                                    <goals>
                                        <goal>generate</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>unpack</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-antrun-plugin</artifactId>
                                    <versionRange>[1.6,)</versionRange>
                                    <goals>
                                        <goal>run</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>com.zetcom.pest</groupId>
                                    <artifactId>maven-suites-plugin</artifactId>
                                    <versionRange>[${pest.version},)</versionRange>
                                    <goals>
                                        <goal>generate</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>

To jest przyklad z poprzedniego (do zeszlego miesiaca) projektu. Caly wycinek wygenerowany przez ten plugin, razem z poczatkowym komentarzem. Jak importowalem projekt w eclipsie, to mi pokazal jakis dialog z mapowaniem pluginow, musial costam sobie dograc, czesci nie umial rozpoznac, i dowalil taka oto kaszane do mojego poma. Ten eclipsowy plugin stal sie bardzo inwazyjny. Rozumiem ze moze sobie costam mapowac, ale dlaczego w moim pomie, i dlaczego widza to wszyscy, nawet ci ktorzy nie uzywaja eclipse? To powinno sie znalezc w jakims innym pliku, ktory jest niewersjonowany, gdzies w .project czy cos, albo nawet w glownym katalogu ale tak zebym mogl dodac ignora. To jest nowe od eclipse 3.7.x i strasznie mnie rozsierdza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1