Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Mit Maven eine jar Datei Bauen ohne irgendeine main Methode
Hallo, ich habe mittels Maven mehrere Klassen in verschiedenen Quelltexten in einen Paket. Das ganze baue ich, mit samt Abhängigkeiten, zur jar Datei.
Soweit so gut. Dazu habe ich auch eine Klasse mit einer "main" Methode. Lasse ich sie weg (was ich möchte), meckert mich Eclipse beim bauen an, dass sie fehlt.
Jetzt zu meinen anliegen. Ich möchte eine Jahr Datei bauen ohne das irgendeine Klasse die Methode "main" hat.
Dann möchte ich die einzelnen Klassen von der jar Datei in ein anderen Projekt zu importieren.
Da, dass ich erst recht neu bin weiß ich nicht ob man das so macht, oder ob man die ganze jar Datei importiert.
Vielleicht kann mir dazu einen Rat geben.
Vielen dank im voraus.
Wenn Du mit Maven arbeitest, reicht ein "Run As" -> "Maven install". Dadurch werden die Klassen kompiliert, das Jar gebaut und im lokalen Maven-Repository installiert. Die anderen Maven-Projekte brauchen dann nur noch die dependency anzugeben.
Dann möchte ich die einzelnen Klassen von der jar Datei in ein anderen Projekt zu importieren.
Da, dass ich erst recht neu bin weiß ich nicht ob man das so macht, oder ob man die ganze jar Datei importiert.
vllt brauchst du ja mvn deploy mit dem deploy plugin das glaub ich von haus aus shcon dabei ist? das kann repositories bauen mit der jar datei ( wie zb in github mit den github repositories )
Das bauen ohne "main" hat funktioniert. Jetzt muss ich nochmal fragen, könnte man nicht die .jar Datei einfach entpacken und mit den Ordner der Abhängigkeiten an einen Ort kopieren und die dann in Java importieren?
Oder macht man das so nicht? Muss man immer ein classpath angeben?
Das bauen ohne "main" hat funktioniert. Jetzt muss ich nochmal fragen, könnte man nicht die .jar Datei einfach entpacken und mit den Ordner der Abhängigkeiten an einen Ort kopieren und die dann in Java importieren?
Oder macht man das so nicht? Muss man immer ein classpath angeben?
Wenn man ein Library-Projekt hat, dann könnte man ein lokales Maven-Repository erstellen, in das man die Library deployt. Dann kann man sie im anderen Projekt auch wieder, wie alle anderen Abhängigkeiten, mit Maven importieren (aus dem lokalen Repository).
Keine Ahnung, ob das der übliche Weg ist. Es gibt bestimmt noch andere Möglichkeiten.
Wenn man ein Library-Projekt hat, dann könnte man ein lokales Maven-Repository erstellen, in das man die Library deployt. Dann kann man sie im anderen Projekt auch wieder, wie alle anderen Abhängigkeiten, mit Maven importieren (aus dem lokalen Repository).
Keine Ahnung, ob das der übliche Weg ist. Es gibt bestimmt noch andere Möglichkeiten.
Also Du beschreibst den üblichen Weg. Ich hatte ganz vergessen, dass es ja um eine Library geht.
Es wird Maven verwendet und Maven nutzt das lokale Repository. Daher macht es Sinn, die eigene Library einfach entsprechend zu deployen.
Wenn man die Software nicht nur selbst nutzen will, dann deployed man seine Abhängigkeit zu einem Zielserver. Das kann Maven Central sein aber auch jedes andere Repository (Also z.B. selbst betrieben oder github oder ....).
Wichtig ist dabei: Die Abhängigkeiten der Lib werden da dann nicht mit eingebunden! Zu dem Maven Repository gehlrt auch immer die pom Datei und die Abhängigkeiten Deiner Lib werden automatisch mit geladen, wenn deine Lib eingebunden wird -> Also auf keinen Fall eine "far jar" deployen!
Und das Einbinden in anderen Projekten kann dann ganz einfach wie alle Abhängigkeiten erfolgen: Über Angabe von groupId, artefactId und version.
Es wird Maven verwendet und Maven nutzt das lokale Repository. Daher macht es Sinn, die eigene Library einfach entsprechend zu deployen.
Wenn man die Software nicht nur selbst nutzen will, dann deployed man seine Abhängigkeit zu einem Zielserver. Das kann Maven Central sein aber auch jedes andere Repository (Also z.B. selbst betrieben oder github oder ....).
Wenn man die Software nicht nur selbst nutzen will, dann deployed man seine Abhängigkeit zu einem Zielserver. Das kann Maven Central sein aber auch jedes andere Repository (Also z.B. selbst betrieben oder github oder ....).
Wir ignorieren Dich nicht sondern wir ergänzen doch lediglich. Es gibt weder eine Aussage, dass Dein Post falsch wäre noch eine Aussage, dass diese Information so ganz neu ist.
Also nochmal für mich zum "mitschreiben".
Ich habe ein Mavenprojekt mit der pom.xml siehe unten.
In den MavenProjekt habe ich 2 Klassen. Und in Maven wird die Bibliothek pi4j geladen.
Jetzt möchte ich unabhängig von der gebauten Jar eine Klasse erstellen, die die Klasse oder Klassen importiert.
Muss man zwingend mit Maven wieder ein Projekt erstellen oder einfach ein Java Projekt?
Du hast irgendwie noch immer eine falsche Vorstellung von den Zusammenhängen. Ich vereinfache das mal stark.
Java-Files werden beim Kompilieren in Class-Files übersetzt. Ein Jar ist einfach ein ZIP, das die Paketstruktur (Verzeichnisse) inkl. der Class-Files enthält. Es spielt aber keine Rolle, welche Tools Du verwendest, um diese Aufgaben zu erledigen.
Maven ist ein solches Tool (Buildsystem), das alle möglichen Schritte übernimmt, unter anderem wird eben auch ein Jar erzeugt, das Du z. B. im target-Verzeichnis des Maven-Projekts findest.
Mit einem "mvn install" (das ggf. von der IDE automatisch ausgeführt wird), wird das Jar von Maven in das lokale Maven-Repository installiert, so dass es von anderen Maven-Projekten aus über eine "dependency" in der POM referenziert werden kann. Das hat aber nichts mehr mit Java zu tun, sondern ist eben eine Eigenheit von Maven.
Du bist somit natürlich keineswegs dazu gezwungen, Maven in einem Projekt zu verwenden, nur weil eine Lib mit Maven gebaut wurde. Ein Jar ist ein Jar.
Es ist also kein Problem, ein x-beliebiges Buildsystem (z. B. ant oder IDE intern) zu verwenden, Du musst lediglich dafür sorgen, dass Du das Jar Deiner Lib (und ggf. etwaige Jars, von denen die Lib abhängig ist) dem Buildsystem passend zur Verfügung stellst.
Du musst lediglich dafür sorgen, dass Du das Jar Deiner Lib (und ggf. etwaige Jars, von denen die Lib abhängig ist) dem Buildsystem passend zur Verfügung stellst.
Genau das meinte ich, wenn ich blanco auf dem PC oder Raspberry einen Java Quelltext erstelle, wie binde ich dann meine erstellten Klassen, die ich jar gepackt habe dann ein?