2015-04-13 9 views
5

Um die Module weniger abhängig von bestimmten Versionen zu machen, möchte ich die Module mit verschiedenen Versionen der Abhängigkeiten testen, damit ich die Ecken der Versionsbox bestimmen kann, in der das Modul gerne funktioniert .Versionen von Abhängigkeiten testen in maven

z Das Modul ist gegen die Bibliothek foo.bar 2.1.2. Dann sollte das Tool 2.0.0 testen und wenn es die dazwischenliegenden Versionen wie git bisect versagt. Dann ähnlich zwischen 2.1.2 und was auch immer die neueste Version ist. Dann mach das mit der nächsten Abhängigkeit.

Ich fand, dass es oft ziemlich trivial ist, den Umfang der Versionen zu erweitern, indem man die Verwendung der Bibliothek optimiert. Bei der Bereitstellung in einem OSGi-Container macht das Ausführen einer großen Anzahl von Versionen pro Abhängigkeit das Leben weniger schmerzhaft. Das manuelle Testen so vieler Kombinationen ist jedoch ein absoluter Albtraum.

Kennt jemand solch ein Werkzeug, damit es nachts auf einem CI-Server laufen kann?

PS: Ich weiß, ein solches Werkzeug würde alle Arten von gnarly Rand Fall und Unvollkommenheiten haben. Ich möchte nur die Menge an Annahmen reduzieren, die implizit beim Bau von Modulen gemacht werden. Normales Testen wird diese seltsamen Fälle sowieso erfassen.

+0

Was meinen Sie mit "Testen aller Kombinationen"? Alle Kombinationen von Abhängigkeiten oder eine Abhängigkeit VS eine Menge von Containern? – Gimby

+0

Ich denke nicht, dass es nützlich ist, alle Kombinationen zu testen. Finden Sie nur die kleinste und größte Version um die Version im POM, die die Tests noch bestehen. Das Testen auf mehreren Containern kann dann basierend auf diesen Ergebnissen durchgeführt werden. –

+1

Es ist eine sehr interessante Frage, aber ich habe Probleme, den Umfang zu finden. Ich habe besonders Probleme mit der Tatsache, dass es nicht nur "Abhängigkeiten" gibt, Maven basiert auf der Idee von transienten Abhängigkeiten, die Sie nicht einmal in Ihren eigenen Poms definieren. Eine Abhängigkeit führt im Allgemeinen zu einer Vielzahl von Abhängigkeiten - mit sehr spezifischen Versionen. – Gimby

Antwort

1

Verwenden Jenkins Matrix Projekt Plugin - siehe https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project

In Ihrem pom.xml die Version als Eigenschaft definieren.

<properties> 
    <my.version>1.30</my.version> 
</properties> 
... 
<dependency> 
    <groupId>com.acme</groupId> 
    <artifactId>my-artifact</artifactId> 
    <version>${my.version}</version> 
</dependency> 

Geben Sie dann bei jeder Iteration der Jenkins-Matrix eine Testversion an.

mvn test -Dmy.version=1.31 
+0

Danke, das war mir nicht bewusst. Es wird nicht nach den Versionen suchen, aber es könnte ein pragmatischer Ansatz sein, bis etwas Züchtiger gefunden wird. Bei vielen Dimensionen kann dies außer Kontrolle geraten, da die Anzahl der Kombinationen 0 (2^m) ist mit m der Anzahl der Abhängigkeiten, für die getestet werden soll. (in der Praxis ein halbes Dutzend). –