In Eclipse können Sie leicht Abhängigkeiten (d. H. Eine JAR-Datei) zu Ihrem Projekt hinzufügen. Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf -> Pfad erstellen -> Bibliotheken hinzufügen.Maven fügt Abhängigkeiten zum Projekt hinzu
Jetzt wird eine versteckte Datei im Projekt ".classpath" erstellt. Innerhalb dieser Datei ist ein classpathentry so jetzt habe ich die Bibliotheken durch Hinzufügen es in einer Java-Datei verwenden kann:
import foo.bar.*;
Diese „Anwendung“ nun auf ein einziges Glas exportiert werden kann.
Wie kann ich dies mit Maven und ohne Finsternis erreichen? Ich wechselte zu Emacs ... :)
Mit dem Befehl:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-cli -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
ich selbst bekommen eine Probe Startanwendung. in einem Src-Ordner ist eine App.java-Datei schreiben "Hallo Welt" auf einer Kommandozeile.
mit folgendem in dem pom.xml ich mir ein Glas in meinem Projekt erhalten (Maven indedependent Deployment) erfolgreich:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.mycompany.third-party</groupId>
<artifactId>commons-cli-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
<overWrite>false</overWrite>
<!--${project.basedir} ${project.build.directory} -->
<outputDirectory>${project.basedir}/resources/repo</outputDirectory>
<destFileName>optional-new-name.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.basedir}/resources/repo</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
Nun, wie kann ich dieses Glas in meinem App.java benutzen? Muss ich eine .classpath-Datei manuell erstellen? Wie kann ich meine Klassenpatente automatisch anordnen? Ich habe versucht, eine manifest.MF mit den Klassenzuordnungen zu erstellen, aber ohne Erfolg. Ich habe mehrere Tutorials ausprobiert.
Ich hatte keinen Erfolg mit:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>${project.basedir}
/resources/repo/optional- new-name.jar</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true
</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<mainClass>your.main.Class</mainClass>
</manifest>
<manifestEntries>
<Class-Path>${project.basedir}/resources/repo</Class-Path>
</manifestEntries>
<manifestFile>
<!--
${project.build.outputDirectory}/META-INF/MANIFEST.MF
-->
${project.basedir}/META-INF/MANIFEST.MF
</manifestFile>
</archive>
<!--
<archive>
<manifest>
<mainClass>com.mkyong.core.App</mainClass>
</manifest>
</archive>
-->
</configuration>
nach manuell MANIFEST.MF zu schaffen.
nach dem Befehl
mvn clean install
die MANIFEST.MF bleibt leer.
Hilfe wäre willkommen.
Danke!
Es ist mir nicht klar, was Sie erreichen möchten? Welche Art von Glas möchten Sie bauen? Warum willst du ein "Glas im Projekt" haben? –
Ja. In der app.java Datei möchte ich mein jar importieren. Und benutze seine Klassen. Genauso wie du eclips verwendest und deinem Projekt eine Bibliothek hinzufügst. –
Mit Maven installieren Sie Ihre Gläser in das lokale Repository oder stellen sie in einem Nexus/Artefactory bereit. Dann referenzieren Sie sie als in der Pom-Datei. Gibt es einen Grund, warum du es nicht so machen willst? –