2013-07-22 8 views
5

Ich baue mein Java-Projekt mit Maven aber konnte nicht erfolgreich sein. Kann mir also bitte jemand die essentiellen Tags und die entsprechenden Werte mitteilen, die in pom.xml benötigt werden, um ein Projekt zu erstellen? Wie kann ich die Sturmabhängigkeiten manuell über die Befehlszeile hinzufügen?Wesentliche Tags zum Erstellen des Java-Projekts mit Maven in pom.xml

Meine Verzeichnisstruktur des Projekts:

ROOT 
| 
|----com--->test----->newpackage---->*.class 
|--- META-INF------>MANIFEST.MF 
|----resource----->words.txt 
|----pom.xml 
|-----*.jar 

Zunächst versuchte ich Maven Link und die pom.xml wie folgt zu erstellen:

<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/xsd/maven-4.0.0.xsd"> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>1.6</version> 
     <executions> 
      <execution> 
      <phase>com.test.newpackage</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Aber danach i mvn package verwenden. Es werfen diese Ausnahme:

[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error building POM (may not be this project's POM). 


Project ID: unknown 
POM Location: /home/naresh/Desktop/SharedFolder/StormEclipse/pom.xml 

Reason: Not a v4.0.0 POM. for project unknown at /home/naresh/Desktop/SharedFolder/StormEclipse/pom.xml 


[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.reactor.MavenExecutionException: Not a v4.0.0 POM. for project unknown at /home/naresh/Desktop/SharedFolder/StormEclipse/pom.xml 
    at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:404) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:272) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.project.InvalidProjectModelException: Not a v4.0.0 POM. for project unknown at /home/naresh/Desktop/SharedFolder/StormEclipse/pom.xml 
    at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1599) 
    at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1571) 
    at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal(DefaultMavenProjectBuilder.java:506) 
    at org.apache.maven.project.DefaultMavenProjectBuilder.build(DefaultMavenProjectBuilder.java:200) 
    at org.apache.maven.DefaultMaven.getProject(DefaultMaven.java:604) 
    at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:487) 
    at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:391) 
    ... 12 more 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: < 1 second 
[INFO] Finished at: Mon Jul 22 14:38:24 IST 2013 
[INFO] Final Memory: 1M/15M 
[INFO] ------------------------------------------------------------------------ 

Danach habe ich diesen Link verwendet Maven link 2 und schuf die pom.xml wie folgt aus:

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test.newpackage</groupId> 
    <artifactId>wordcount</artifactId> 
    <version>0.0.1</version> 
    <build> 
     <plugins> 
      <plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
    <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 
    <archive> 
     <manifest> 
     <mainClass>com.test.newpackage</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 
     </plugins> 
    </build> 
    <repositories> 
     <!-- Repository where we can found the storm dependencies <repository> 
      <id>clojars.org</id> <url>http://clojars.org/repo</url> </repository> --> 
    </repositories> 
    <dependencies> 
     <!-- Storm Dependency --> 
     <dependency> 
      <groupId>storm</groupId> 
      <artifactId>storm</artifactId> 
      <version>0.8.1</version> 
     </dependency> 
    </dependencies> 
</project> 

Dieses Mal ist es diese Ausnahme werfen:

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to resolve artifact. 

Missing: 
---------- 
1) storm:storm:jar:0.8.1 

    Try downloading the file manually from the project website. 

    Then, install it using the command: 
     mvn install:install-file -DgroupId=storm -DartifactId=storm -Dversion=0.8.1 -Dpackaging=jar -Dfile=/path/to/file 

    Alternatively, if you host your own repository you can deploy the file there: 
     mvn deploy:deploy-file -DgroupId=storm -DartifactId=storm -Dversion=0.8.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 

    Path to dependency: 
    1) com.test.newpackage:wordcount:jar:0.0.1 
    2) storm:storm:jar:0.8.1 

---------- 
1 required artifact is missing. 

for artifact: 
    com.test.newpackage:wordcount:jar:0.0.1 

from the specified remote repositories: 
    central (http://repo1.maven.org/maven2) 

Antwort

4

über Ihre Struktur:

Maven die Java-Klassen übernimmt in src/main/java und den Ressourcen (alles in Ihrem Ordner resource und Ihrem META-INF dir) in src/main/resources sein. Die Verzeichnisstruktur, die Sie beschrieben haben, wird nicht funktionieren, auch wenn Sie Maven wegen der Java-Klassen im Root-Verzeichnis (Rekursion) etwas optimieren. Warum verwendest du nicht die Standardstruktur? Sie sollten wirklich einen guten Grund haben, dies zu ändern.

Sturm Abhängigkeit:

Sie haben bereits die Verbindung zum externen Repository in Ihrem POM. Aber es ist übertroffen. Dies sollte wie erwartet funktionieren. Wenn Sie hinter einem Proxy sind, müssen Sie define a proxy in your settings.xml

+0

Nach Ihren Vorschlägen habe ich meine pom.xml behalten, um so zu sein. Außerdem habe ich meine Ordnerstruktur beibehalten, wie Sie gesagt haben. Jetzt kann ich JAR-Datei im Zielordner erstellen. Welche enthalten nur das META-INF, aber in meinen Klassendateien fehlen Eingaben? Auch ich paste meine pom.xml Datei 4.0.0 \t com.test.NewPackage \t wordcount \t 0.0.1 \t jar Naresh

+0

Könnten Sie bitte die neue Struktur zu Ihrer Frage hinzufügen? Ich bin mir nicht sicher, ob ich verstehe, was der aktuelle Zustand ist. Bitte beachten Sie: Der Ordner 'src/main/java' sollte keine .class-Dateien, sondern die nicht kompilierten .java-Dateien enthalten. Maven kompiliert sie für Sie. .class-Dateien in diesem Ordner werden ignoriert und nicht zu Ihrer JAR-Datei hinzugefügt! –

1

Sie sollte mindestens diese 3 Tags haben:

<groupId>...</groupId> 
<artifactId>...</artifactId> 
<version>...</version> 

Es ist die Art, wie maven ein Artefakt identifiziert, indem es diese 3 Eigenschaften verwendet (wenn Sie eine Abhängigkeit definieren).

0

Die wichtigsten Tags sind diejenigen, die in der Fehlermeldung erwähnt werden:

<modelVersion>4.0.0</modelVersion> 

, die Sie in Ihrer pom-Datei verpasst.

+0

Ich habe versucht mit ModelVersion auch, aber hat nicht funktioniert – Naresh

+0

Und was war die Fehlermeldung? – khmarbaise

+0

Ich habe den ganzen Fehler in meiner Frage zuletzt eingefügt. Überprüfen Sie auch meine Verzeichnisstruktur am Anfang meiner Frage. Gibt es ein Problem, wenn ich auf diese Weise benutze? – Naresh

Verwandte Themen