2013-03-11 5 views
5

Ich verwende Eclipse (4.2 Juno) mit m2e mit den Standardeinstellungen. Quellcode ist in src/main/java und Testcode ist in src/test/java.Kann ich mit eclipse (maven, m2e) einen Fehler/eine Warnung ausgeben, wenn der Hauptcode auf den Testcode verweist?

Manchmal habe ich unbeabsichtigt import einige Sachen vom Test zu einer Klasse in Haupt. Eclipse beklagt sich nicht darüber (sowohl src/main/java als auch src/test/java sind nur als Quellordner konfiguriert, wenn m2e verwendet wird), und alle Tests laufen ordnungsgemäß, da die Testumgebung (JUnit) auf Code sowohl von main als auch von test zugreifen kann. Wenn ich jedoch versuche, den Hauptcode später selbst zu starten (nachdem er angeblich getestet wurde), werde ich unweigerlich eine Menge ClassNotFoundException s bekommen, wenn ich versuche, den Code zu verwenden.

Gibt es eine Möglichkeit, dass Eclipse in diesem Fall Fehler oder Warnungen anzeigt?

+1

Wenn Sie "mvn compile" ausführen, werden Ihre Dateien mit dem richtigen Classpath kompiliert. –

+1

Sie könnten eine Maven-Enforcer-Plugin-Regel haben, die prüft, ob nichts von Test-Gläsern abhängt, wenn Sie das meinen. Und Sie sollten ein CI-System tun lassen, was @ ThorbjørnRavnAndersen vorschlägt. – SpaceTrucker

+0

Mein Projekt ist momentan zu klein, um CI einzurichten. Ich bin momentan der einzige Täter. Ich schäme mich auch zu sagen, dass ich mich nie darum gekümmert habe, wie man maven von der Kommandozeile aus benutzt ... Ich kann nicht einmal 'mvn compile' bekommen, ohne einen Haufen anderer Fehler auszuführen. Für den Moment möchte ich nur wissen, ob ich einfach weiter in Eclipse codieren kann :) –

Antwort

0

Wenn Ihr Code in src/main/java auf Code in der src/test/java verweist, wird es einfach nicht mit Maven kompilieren. Keine Notwendigkeit, Ihre eigene Enforcer-Regel dafür zu schreiben.

0

Leider gibt es keine Möglichkeit, dies zu tun (das weiß ich). Auch wenn m2e den Klassenpfad manchmal auf andere Weise falsch interpretiert, sollten Sie sich daran gewöhnen, den Maven-Build auszuführen, bevor Sie einchecken - unabhängig davon, was Eclipse über die Code-Kompilierung sagt.

Sehen Sie diese Präsentation http://www.eclipsecon.org/europe2012/sites/eclipsecon.org.europe2012/files/EclipseConEU2012-m2e-talk.pdf (unter 'Dependency Scopes') für mehr Hintergrund.