Announcement

Collapse
No announcement yet.

Maven mergen zweier Maven Projekte anhand der pom.xml

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Hallöchen, also ich habe dann doch ein Erfolgserlebnis gehabt. Ich nutze nun nicht mehr das verbugte Eclipse m2e Plugin (das lies sich nicht mal mehr deinstallieren), sondern habe mir das apache-maven-3.2.5 heruntergeladen und auf Windows 7 konfiguriert. Nun nutze ich maven ausschließlich noch über die Konsole und es wird ein Fehlerfreier Build durchgeführt und ein WAR File erzeugt und in den target Ordner gelegt.

    Nun meine Frage, ein WAR File kann ich ja nun nicht in einem anderen Projekt als Dependency einfügen oder?

    Das heißt ich muss den Build als JAR File machen?

    Muss ich, wenn das so ist, dieses JAR File dem lokalen Maven Repository hinzufügen um es dann in einem anderen Projekt als Dependency einfügen / nutzen zu können?

    Wäre nett wenn du mir dazu vielleicht noch ein paar Tipps geben könntest.

    Vielen Dank.

    Comment


    • #32
      Wenn du eine Webapplikaion hast musst du ein WAR erzeugen.
      Für eine Library ein JAR

      Muss ich, wenn das so ist, dieses JAR File dem lokalen Maven Repository hinzufügen um es dann in einem anderen Projekt als Dependency einfügen / nutzen zu können?
      Ja, genau so
      Christian

      Comment


      • #33
        Ich habe gerade das JAR File mal mit win.rar entpackt und musste feststellen das meine Klassen aus den Source Foldern gar nicht dabei sind. Sondern nur JOSN Configs und so.

        Hier noch mal meine pom.xml wie sie jetzt ist.

        Code:
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        	<modelVersion>4.0.0</modelVersion>
        	<groupId>deconFm_Version5</groupId>
        	<artifactId>decon_fm_version5</artifactId>
        	<packaging>jar</packaging>
        	<version>0.0.2</version>
        	<name>decon_fm_version5 Maven Webapp</name>
        	<url>http://maven.apache.org</url>
        	
        	<properties>
        		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        		
        		<junit.version>4.9</junit.version>
        		
        		<spring.version>3.2.0.RELEASE</spring.version>
        		
        		<hibernate.core>3.3.2.GA</hibernate.core>
        		<hibernate.annotations>3.4.0.GA</hibernate.annotations>
        		<javax.persistence>1.0</javax.persistence>
        		<javassist.version>3.12.1.GA</javassist.version>
        		<c3p0.version>0.9.1.2</c3p0.version>
        		<postgresql.version>9.1-901.jdbc4</postgresql.version>
        		
        		<jersey.version>1.13</jersey.version>
        		
        		<jackson.version>1.9.13</jackson.version>
        		
        		<servlet.version>2.5</servlet.version>
        		
        		<org.slf4j.version>1.7.2</org.slf4j.version>
        		<log4j.version>1.2.16</log4j.version>
        		
        		<commons.collections.version>3.2.1</commons.collections.version>
        <!-- 		<commons.lang.version>2.3</commons.lang.version> -->
        	</properties>
        	
        	<dependencies>
        		<dependency>
        			<groupId>junit</groupId>
        			<artifactId>junit</artifactId>
        			<version>${junit.version}</version>
        			<scope>test</scope>
        		</dependency>
        		
        		<!-- Spring Komponenten -->
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-core</artifactId>
        			<version>${spring.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-context</artifactId>
        			<version>${spring.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-orm</artifactId>
        			<version>${spring.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-web</artifactId>
        			<version>${spring.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-test</artifactId>
        			<version>${spring.version}</version>
        			<scope>test</scope>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-context-support</artifactId>
        			<version>${spring.version}</version>
        		</dependency>
        		
        		
        		<!-- Datenbank Komponenten -->
        		<dependency>
        			<groupId>org.hibernate</groupId>
        			<artifactId>hibernate-core</artifactId>
        			<version>${hibernate.core}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>org.hibernate</groupId>
        			<artifactId>hibernate-annotations</artifactId>
        			<version>${hibernate.annotations}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>javax.persistence</groupId>
        			<artifactId>persistence-api</artifactId>
        			<version>${javax.persistence}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>javassist</groupId>
        			<artifactId>javassist</artifactId>
        			<version>${javassist.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>c3p0</groupId>
        			<artifactId>c3p0</artifactId>
        			<version>${c3p0.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>postgresql</groupId>
        			<artifactId>postgresql</artifactId>
        			<version>${postgresql.version}</version>
        		</dependency>
        		
        		<!-- Jersey Komponenten -->
        		<dependency>
        			<groupId>com.sun.jersey</groupId>
        			<artifactId>jersey-server</artifactId>
        			<version>${jersey.version}</version>
        		</dependency>
        		
        		<dependency>
        			<groupId>com.sun.jersey</groupId>
        			<artifactId>jersey-json</artifactId>
        			<version>${jersey.version}</version>
        		</dependency>
        		
        		<!-- Apache Components -->
        		<dependency>
        			<groupId>commons-lang</groupId>
        			<artifactId>commons-lang</artifactId>
        			<version>2.3</version>
        		</dependency>
        		
        		<!-- Jersey - Spring Integration -->
        		<dependency>
        			<groupId>com.sun.jersey.contribs</groupId>
        			<artifactId>jersey-spring</artifactId>
        			<version>1.13</version>
        			<exclusions>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring</artifactId>
        				</exclusion>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring-core</artifactId>
        				</exclusion>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring-web</artifactId>
        				</exclusion>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring-beans</artifactId>
        				</exclusion>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring-context</artifactId>
        				</exclusion>
        				<exclusion>
        					<groupId>org.springframework</groupId>
        					<artifactId>spring-aop</artifactId>
        				</exclusion>
        			</exclusions>
        		</dependency>
        		
        		<!-- Jackson -->
        		<dependency>
        			<groupId>org.codehaus.jackson</groupId>
        			<artifactId>jackson-mapper-asl</artifactId>
        			<version>${jackson.version}</version>
        		</dependency>
        		
        		<!-- Servlet -->
        		<dependency>
        			<groupId>javax.servlet</groupId>
        			<artifactId>servlet-api</artifactId>
        			<version>${servlet.version}</version>
        		</dependency>
        		
        		<!-- Logging Komponenten -->
        		<dependency>
        			<groupId>org.slf4j</groupId>
        			<artifactId>slf4j-api</artifactId>
        			<version>${org.slf4j.version}</version>
        		</dependency>
        		<dependency>
        			<groupId>org.slf4j</groupId>
        			<artifactId>slf4j-log4j12</artifactId>
        			<version>${org.slf4j.version}</version>
        		</dependency>
        		<dependency>
        			<groupId>log4j</groupId>
        			<artifactId>log4j</artifactId>
        			<version>${log4j.version}</version>
        		</dependency>
        		<dependency>
        			<groupId>commons-collections</groupId>
        			<artifactId>commons-collections</artifactId>
        			<version>${commons.collections.version}</version>
        		</dependency>
        	</dependencies>
        	<build>
        		<finalName>${project.artifactId}</finalName>
        		<plugins>
        			<plugin>
        				<groupId>org.apache.maven.plugins</groupId>
        				<artifactId>maven-compiler-plugin</artifactId>
        				<version>3.1</version>
        				<configuration>
        <!-- 					<verbose>false</verbose> -->
        <!-- 					<fork>true</fork> -->
        <!-- 					<executable>${JAVA_HOME}/javac</executable> -->
        					<source>1.7</source>
        					<target>1.7</target>
        				</configuration>
        			</plugin>
        			<plugin>
        				<groupId>org.apache.maven.plugins</groupId>
        				<artifactId>maven-jar-plugin</artifactId>
        				<configuration>
        					<archive>
        						<manifest>
        							<mainClass>core.utils.App</mainClass>
        						</manifest>
        					</archive>
        				</configuration>
        			</plugin>
        		</plugins>
        	</build>
        </project>
        Und hier nie Ausgangsklasse, da steht natürlich nichts weiter drin.

        Code:
        package core.utils;
        
        public class App {
        	
        	public static void main() {
        		System.out.println("geht los");
        	}
        }
        Muss ich noch irgendwas machen, dass mir auch die ganzen Klassen aus den Packages mit in das JAR File gepackt werden? Weil die sind ja wichtig.

        Comment


        • #34
          Die Sourceklassen *.java werden nicht in ein JAr gepackt. Nur fertig compilierte *.class Dateien in der Struktur der Packages
          Christian

          Comment


          • #35
            Wie bekomme ich das hin das meine Klassen in das JAR gepackt werden? Weil die brauche ich ja in anderen Projekten.

            Weil, im Eclipse, sind im Projekt Explorer nur java Dateien zu sehen und im Nevigator die class Dateien. Was muss ich da tun?

            Comment


            • #36
              Ich kann nicht erkennen, warum deine Klassen nicht compiliert werden.
              -Verzichte erstmal auf die ganzen jetzt noch nicht benötigten Dependencies
              -Entferne das compier-plugIn
              -Prüfe, oo du eine Maven-Struktur hast -Prüfe deine Projketstruktur. Du hat deine Klasse unter src/main/java/core/utils liegen
              -Dein src/main/java-Folder ist unter --> Projekt markieren -> rechte Maustaste -> Properties -> Java Build Path -> Source zu finden
              Christian

              Comment


              • #37
                New Projekt -> Maven ->Maven Projekt
                -> Use default Workspace location, create simple project
                -> GroupID = Test, ArtefactID=Test, Packaging =JAR
                -> Finish

                Unter src/main/java neue Packages "de.test" anlegen
                Dort neue Klasse anlegen -> Test
                Projekt markieren -> rechte Maustaste -> Run As -> Maven install

                Im target Verzeichnis sollte jetzt ein JAR mit dem Namen "Test-0.0.1-SNAPSHOT.jar" vorhanden sein
                Beim öffnen des JARs ist Test.class enthalten
                Christian

                Comment


                • #38
                  Also der src/main/java Folder ist da, aber in der Projektstruktur im Eclipse nicht zu sehen.

                  Und meine Projektstruktur habe ich mal als Anhang mit geschickt. Mmn ist dies eine Mavenstruktur.

                  Ich habe hier etwas gefunden http://stackoverflow.com/questions/1...es-in-war-file, nur werde ich da nicht richtig schlau daraus. Was ich auch nicht verstehe warum der Folder src/main/java nicht in der Projektstrutur zu sehen ist.
                  Attached Files
                  Zuletzt editiert von Litti; 05.02.2015, 10:34.

                  Comment


                  • #39
                    Ich kann nichts erkennen auf dem Bild Siehe Beitrag 37
                    Christian

                    Comment


                    • #40
                      Originally posted by Christian Marquardt View Post
                      New Projekt -> Maven ->Maven Projekt
                      -> Use default Workspace location, create simple project
                      -> GroupID = Test, ArtefactID=Test, Packaging =JAR
                      -> Finish

                      Unter src/main/java neue Packages "de.test" anlegen
                      Dort neue Klasse anlegen -> Test
                      Projekt markieren -> rechte Maustaste -> Run As -> Maven install

                      Im target Verzeichnis sollte jetzt ein JAR mit dem Namen "Test-0.0.1-SNAPSHOT.jar" vorhanden sein
                      Beim öffnen des JARs ist Test.class enthalten
                      Ok, dass werde ich mal machen. Aber wie mache ich das dann in einem neuen Projekt mit den Source Foldern? Denn da liegen viele Packages und in denen die Klassen.

                      Comment


                      • #41
                        Die Sourcefolder werden automatisch in Eclipse angelegt -> Siehe Beitrag #37
                        Wenn du schon vorhandene Klasse hast, kopierst du die unterhalb hinein

                        De Weiteren solltest du dir langsam klar werden was du nun hast ein WAR oder JAR. Beides geht so nicht
                        Christian

                        Comment


                        • #42
                          Ich meine das anders. Ich will ein JAR.

                          Ich habe in dem momentanen Projekt meine Packages in Source Foldern abgelegt.

                          z.B.
                          src/de/firma/v5/core/security

                          In dem Source Folder sind dann Packages wie z.B.

                          core.security.controller
                          core.security.model
                          core.security.dao

                          Es gibt mehrere Source Folder mit dieser Struktur.

                          Wie muss ich damit umgehen? Ich möchte ungern in den src/main/java Source Folder ein Package core.security anlegen und da dann ein haufen DAO und weiß ich was Klassen rein packen.

                          Konnte ich mich jetzt verständlich ausdrücken?

                          Comment


                          • #43
                            Originally posted by Christian Marquardt
                            Was hast du nun JAR oder WAR? Webapplication oder Lib?
                            Die Sourcefolder werden bei dem vorgehen aus #37 automatisch angelegt.
                            ggf. vorhandene Packages kannst du reinkopieren
                            Es ist ein REST Webservice und das Projekt jetzt ist die Basis für alle anderen. Der build ist ja unwichtig für den Tomcat. Ich will die Klassen aus dem Basisprojekt dann in andere als Dependency includen sozusagen.

                            Comment


                            • #44
                              -> Zu Beitrag 42: Und warum nicht?
                              -> Zu Beitrag 43: Das ist dan ein falsches Anwendungsdesign. Die Klassen, die alle nutzen, kommen in eine extra Lib die alle nutzen. Der Webservice ist dann ein WAR und die Lib die alle Nutzen ein JAR
                              Christian

                              Comment


                              • #45
                                Originally posted by Christian Marquardt View Post
                                -> Zu Beitrag 42: Und warum nicht?
                                -> Zu Beitrag 43: Das ist dan ein falsches Anwendungsdesign. Die Klassen, die alle nutzen, kommen in eine extra Lib die alle nutzen. Der Webservice ist dann ein WAR und die Lib die alle Nutzen ein JAR
                                Nun weil das ziemlich ungeordnet aussieht, aber da kann ich ja was überdenken.

                                Nun das Basisprojekt enthält die Security, Benutzerverwaltung etc. Auf dem Server läuft das Projekt gut. Ich brauche die Klassen aber dann, weil dieses Basisprojekt, also deren Klassen in allen anderen Projekten mit verwendte werden sollen.

                                Comment

                                Working...
                                X