NetBeans Project erstellen

sign

Bekanntes Mitglied
Hallo, hab folgende Struktur in NetBeans:

projekt
- Quellpacket
- Packet1 (mit main)
- Packet2 (mit main)
- Packet3 (mit Klassen die von Packet1 und Packet2 verwendet werden)

nun möchte ich jeweils aus Packet1 und Packet2 (natürlich mit den Klassen aus Packet3) eine .jar Datei erstellen. Bekomms aber nur so hin das das ganze Projekt erstellt wird.

danke für eure hilfe.
 
wüsste ich jetzt nicht wie das bei Netbeans geht (und habe auch nichts unter den Projekt-Einstellungen gefunden). Aber ich hätte aus deinen 3 Paketen 3 Projekte erstellt. Dann hätteste ganz einfach 3 Jar-Files und die Packet3 hätte ich als lib Packet1 und Packet2 gegeben...(nur so ein Tipp für die Zukunft)
 
Wenn das nur in einem Projekt ist musst du die build.xml anpassen. Ich glaube Netbeans verwendet standardmäßig ANT. Von daher sollte das nicht so schwer sein.
 
Hallo, hab folgende Struktur in NetBeans:

projekt
- Quellpacket
- Packet1 (mit main)
- Packet2 (mit main)
- Packet3 (mit Klassen die von Packet1 und Packet2 verwendet werden)

nun möchte ich jeweils aus Packet1 und Packet2 (natürlich mit den Klassen aus Packet3) eine .jar Datei erstellen. Bekomms aber nur so hin das das ganze Projekt erstellt wird.

danke für eure hilfe.
Eigentlich brauchst du 3 Projekte.
 
Wenn ich mit Bibliotheken arbeite (die ich aus einer .jar Datei erstelle), so wie von Tomate beschrieben, muss ich doch immer wenn ich was in den Klassen ändern will eine neue .jar erstellen und wieder neu als Bibliothek einbinden. Oder??

Wie kann ich die Klassen aus einem Projekt in ein anderes Importieren??
 
Dein vorhaben geht ganz einfach in einem Project mit ANT

einfach die build.xml öffnen und die JAR in einzelnen ANT Taks zusammen setzten lassen:
[XML]
<target name="-do-jar-with-manifest" >
<mkdir dir="${dist.dir}"/>
<jar destfile="${dist.dir}/package1.jar">
<fileset dir="${build.classes.dir}" includes="com/package1/**"/>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Package" value="${package}" />
<attribute name="Extension-Name" value="${name}" />
<attribute name="Specification-Title" value="${title}" />
<attribute name="Implementation-Version" value="${version}" />
<attribute name="Implementation-Vendor" value="${vendor}" />
</manifest>
</jar>

<jar destfile="${dist.dir}/package2.jar">
<fileset dir="${build.classes.dir}" includes="com/package2/**"/>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Package" value="${package}" />
<attribute name="Extension-Name" value="${name}" />
<attribute name="Specification-Title" value="${title}" />
<attribute name="Implementation-Version" value="${version}" />
<attribute name="Implementation-Vendor" value="${vendor}" />
</manifest>
</jar>

<jar destfile="${dist.dir}/package3.jar">
<fileset dir="${build.classes.dir}" includes="com/package3/**"/>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Package" value="${package}" />
<attribute name="Extension-Name" value="${name}" />
<attribute name="Specification-Title" value="${title}" />
<attribute name="Implementation-Version" value="${version}" />
<attribute name="Implementation-Vendor" value="${vendor}" />
</manifest>
</jar>
</target>
[/XML]

Schon hast du in dist 3 jars... kannst du natürlich beliebig erweitern. Das target hier überschreibt das Netbeans eigene, aber da sist ja auch so gedacht.... siehe auch die Kommentare in der build.xml und build-impl.xml

Wenn du es noch verschönern willst, z.B. die Namen der JAR files aus properties lesen guck die mal die project.properties an. Da kannst du eine ganze Menge customizieren.
 
Zuletzt bearbeitet von einem Moderator:
Ansonsten wenn du es jetzt in drei Projekte aufteilen willst musst du in jedem Projekt alle abhängigen libs hinzufügen. Klassen in anden Projekten kannst du einbinden über:

Project -> Properties -> Libraries -> Add Project
 
oder du machst es so wie ich: ich entwickle in Eclipse die Logik und in Netbeans die GUI. Aus Eclipse exportiere ich das ganze als JAR in den Ordner lib (welcher im Projekt-ordner in Netbeans liegt). Ich sage einmal, er soll mir das JAR-File einbinden und wenn ich Änderungen in Eclipse mache, sind die auch sofort in Netbeans wirksam.
 
in einem Project mit ANT
einfach die build.xml öffnen und die JAR in einzelnen ANT Taks zusammen setzten lassen:

Kann ich die mit NetBeans erstelln oder wie meinst zusammen setzten lassen?? Muss ich die datei manuell anpassen.

kenn mich mit ANT überhaupt nicht aus. Hab im Netz was vom Prof. Dr. gefunden werd aber nicht so ganz schlau aus der Sache.
 
In deinem Projectfolder gibt es eine build.xml

Die wird von Netbeans mit hilfe von Ant abgearbeitet, die build.xml ist also quasi wie ein MAKEFILE bei C.

NetBeans hat für jedes Project zwei davon:
build.xml
nbproject/build-impl.xml

die im nbproject folder solltest du NICHT anfassen. In der build.xml in dem Project folder kannst du Settings und tasks mit deinen eigenen Definitionen überschreiben.

Wenn du den code den ich oben geposted habe in die build.xml ans ende einträgst und clean & build machst hast du nacher 3 eigene Jars.

Du musst evtl halt einige Kleinigkeiten anpassen, z.B. wie die packages heißen. Versuch mal mein Script zu verstehen.

Ein kurze und gute Einführung in Ant:
Ant - Einführung - Wiklet
ronasoft.de - Installation und kurze, praktische Einführung in Apache Buildwerkzeug Ant.

Mit Ant kann man eine ganze Menge netter Dinge machen. Kompilieren und in Jars packen ist da nur ein Teil von. Ist halt eine konkurierendes Build Environment zu Maven.
 
Hallo,

hab endlich ein Ergebinis. 🙂

Java:
<project name="myParsers" default="build" basedir=".">
   
    <import file="nbproject/build-impl.xml"/>

     <target name="-do-jar-with-manifest" >
        <mkdir dir="${dist.dir}" />
	    <jar destfile="${dist.dir}/parse_1.jar" >
		<fileset dir="${build.classes.dir}" includes="**/**" />
                    <manifest>
                        <attribute name="Main-Class" value="parse_1.Main" />
                        <attribute name="Built-By" value="${user.name}" />
                        <attribute name="Package" value="${package}" />
                        <attribute name="Extension-Name" value="${name}" />
                        <attribute name="Specification-Title" value="${title}" />
                        <attribute name="Implementation-Version" value="${version}" />
                        <attribute name="Implementation-Vendor" value="${vendor}" />
                    </manifest>
            </jar>

            <jar destfile="${dist.dir}/parse_2.jar" >
                <fileset dir="${build.classes.dir}" includes="**/**" />
                <manifest>
                    <attribute name="Main-Class" value="parse_2.Main" />
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="Package" value="${package}" />
                    <attribute name="Extension-Name" value="${name}" />
                    <attribute name="Specification-Title" value="${title}" />
                    <attribute name="Implementation-Version" value="${version}" />
                    <attribute name="Implementation-Vendor" value="${vendor}" />
                </manifest>
            </jar>
        </target>


Gibt aber noch zwei schachen die ich nicht hinbekomm. Zum einen wird immer noch das ganze project erstellt (mit Projektnamen aus Netbeans). Zum andern bekomm ich die includes nicht so hin das nur die gemeinsam genuzten Klassen mitgenommen werden. (im Beispiel oben Packet3)
Java:
<fileset dir="${build.classes.dir}" includes="com/package1/**"/>
Was bedeutet com??
includes="parse_1" funktioniert nicht.
includes="com/parse_1" funktioniert leider auch nicht.
 
Java:
<fileset dir="${build.classes.dir}" includes="parse_1/**" />
<fileset dir="${build.classes.dir}" includes="packet3/**" />

Hab nun auch beide includes. Bleibt nur noch die Frage wie kann ich unterbinden das zusäzlich noch das ganze Projekt erstellt wird.
 
unten rechts gibt es einen [c]Edit-Button[/c] bitte nicht immer einen neuen Post erstellen
 
Was bedeutet com??
includes="parse_1" funktioniert nicht.
includes="com/parse_1" funktioniert leider auch nicht.

du musst bei den includes und excludes halt Verzeichnisspfade angeben.

includes="com/my/package/package1/*.class"

Würde so all Classes in com.my.package.package1 reinpacken. Packages sind ja nichts anderes als eine Folderhierachie.

Wenn du hier noch hilfe brauchst müssest du mal deine Package Struktur posten.

Das das ganze Project mitgebaut wird ist doch nicht weiter wild, oder? Kann man aber auch rausnehmen indem du noch die anderen Jartargets überschreibst:

In die build.xml muss noch rein:
[XML]
<target name="-do-jar-without-manifest">
<echo message="skip -do-jar-without-manifest"/>
</target>
<target name="-do-jar-with-mainclass">
<echo message="skip -do-jar-with-mainclass"/>
</target>
<target name="-do-jar-with-libraries">
<echo message="skip -do-jar-with-libraries"/>
</target>
[/XML]
 
Sehr schön 🙂

Wenn du noch Fragen zum Ant build hast, nur los. Man kann damit viele schöne Dinge machen und da Netbeans das schon direkt eingebaut hat ist das echt angenehm. Gut in Eclipse auch nur ein Klick, aber da muss man von scratch mit der build.xml anfangen... 🙂
 

Neue Themen


Zurück
Oben