Dieses Projekt erstellt einen Maven-Archetype, mit dem ein Maven-Projekt für einen JADE-Agenten angelegt werden kann.
Der Archetyp kann erzeugt und lokal im Maven-Repo (.m2) installiert werden, und zwar auf der Kommandozeile mit
>mvn clean install archetype:update-local-catalog
Anschließend kann ein neues Maven-Projekt angelegt werden, und zwar mit einem Befehl wie folgendem:
>mvn archetype:generate
-DarchetypeGroupId=agentville.jade.maven.archetype
-DarchetypeArtifactId=jade-agent-archetype
-DarchetypeVersion=1.0-SNAPSHOT
-DgroupId=<groupId>
-DartifactId=<artifactId>
(Wobei sich die Versions-Nr natürlich auch mal geändert haben kann. Und die <groupId> und die <artifactId> entsprechend ersetzt werden müssen.)
Das mit diesem Archetype erstellte Projekt kann in Eclipse (o.ä.) importiert und auch direkt kompiliert werden. Es erzeugt dann zwei JARs:
Ein ausführbares Standard-Maven-Artefakt mit der Bezeichnung <artifactId>-<version>.jar
sowie
einen JADE-Agenten mit der Bezeichnung voll_qualifizierter_Klassenname_des_Agenten.jar
. Inhaltlich sind beide Agenten identisch.
Der Agent selbst ist natürlich simpel und dient lediglich als leichter Einstieg.
- Wenn die Klasse "MyAgent" umbenannt wird, dann muss diese Bezeichnung auch in der POM geändert werden.
- Wenn die Klasse "MyAgent" umbenannt wird, dann muss außerdem die Referenz in der Klasse "AgentStarter" geändert werden - außer die Umbenennung der Klasse erfolgte mit der Rename-Funktion der IDE. Die macht das automatisch.
- Wenn die Klasse "AgentStarter" umbenannt wird, dann muss ebenfalls eine Referenz in der POM geändert werden.
- Wenn die Klasse "AgentStarter" gelöscht wird, beispielsweise weil der Agent keine
Main
-Methode benötigt, wird durch die POM ein ungültiger Eintrag in der Manifest-Datei der erstellten Binaries erzeugt. Der Eintrag kann dann auch einfach entfallen, also folgende Zeile löschen:<mainClass>${project.groupId}.AgentStarter</mainClass>
- Die Properties "name" und "url" in der POM sollten natürlich auch sinnvoll geändert werden.
- Die Main-Methode und vllt. auch den Agenten noch etwas ausbauen.
- Logging ergänzen (Java logging, JADE logging)
- Testfälle ergänzen (JADE TestSuite, junit?)
- API-Docs und Reports (javadoc, site)
- Archetype veröffentlichen (oder wenigstens als Binary zur Verfügung stellen.) (Vor dem veröffentlichen für eine vernünftige Domain/eine vernünftige GroupID sorgen.)
Uns allen ist klar, dass ich folgendes vermutlich nie machen werde - auch wenn ich es gern würde:
- vernünftiges Logging mit log4j o.ä. Da gibts auch was für, heißt log4jade, funzt aber net unter bspswse Android afaik.
- Aufteilung auf verschiedene Archetypen:
rare | medium | well done | |
---|---|---|---|
Grundstruktur | X | X | X |
Java-Docs (API) | X | X | X |
Logging | X | X | |
Testing | X | ||
Reports | X |