2013-07-22 7 views
5

Sto costruendo il mio progetto java usando Maven ma non ci sono riuscito. Quindi, chiunque può dirmi i tag essenziali e i valori corrispondenti richiesti in pom.xml per creare un progetto? Inoltre, come posso aggiungere manualmente le dipendenze temporali dalla riga di comando?Tag essenziali per la creazione del progetto java usando maven in pom.xml

mia struttura di directory del progetto:

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

Inizialmente ho provato Maven Link e creare il pom.xml in questo modo:

<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> 

Ma, dopo che uso mvn package. E gettare questa eccezione:

[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] ------------------------------------------------------------------------ 

Dopo di che ho usato questo link Maven link 2 e ha creato il pom.xml in questo modo:

<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> 

Questa volta è gettare questa eccezione:

[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) 

risposta

4

Circa la struttura:

Maven assume le classi Java di essere in src/main/java e le risorse (nulla nella cartella resource e la tua dir META-INF) in src/main/resources. La struttura della directory che hai descritto non funzionerà anche se modifichi un po 'il tuo maven a causa delle classi java nella directory principale (ricorsione). Perché non usi la struttura predefinita? Dovresti davvero avere una buona ragione per cambiare questo.

Dipendenza tempesta:

hai già il collegamento al repository esterni in POM. Ma è esagerato. Questo dovrebbe funzionare come previsto. Se sei dietro un proxy devi define a proxy in your settings.xml

+0

Dopo i vostri suggerimenti, ho mantenuto il mio pom.xml in questo modo. Inoltre, ho mantenuto la struttura delle mie cartelle come hai detto tu. Ora sono in grado di creare file jar nella cartella di destinazione. Che contengono solo il META-INF, ma i miei file di classe mancano di input? Inoltre sto incollando il mio file pom.xml 4.0.0 \t com.test.NewPackage \t wordcount \t 0.0.1 \t vaso Naresh

+0

La prego di aggiungere la nuova struttura alla tua domanda? Non sono sicuro di capire qual è lo stato attuale. Nota: la cartella 'src/main/java' non dovrebbe contenere file .class ma i file .java non compilati. Maven li compila per te. i file .class in questa cartella verranno ignorati e non verranno aggiunti al tuo file jar! –

1

È dovrebbe avere almeno 3 tag:

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

È il modo in cui maven identifica un artefatto, utilizzando queste 3 proprietà (quando si definisce una dipendenza).

0

I tag più importanti sono quelli che sono menzionati nel messaggio di errore:

<modelVersion>4.0.0</modelVersion> 

che vi siete persi nel file pom.

+0

ho provato a utilizzare anche modelVersion ma non ha funzionato – Naresh

+0

E qual era il messaggio di errore? – khmarbaise

+0

Ho incollato l'intero errore nella mia domanda all'ultimo. Inoltre, controlla la mia struttura di directory nella parte superiore della mia domanda. C'è un problema se uso in questo modo? – Naresh

Problemi correlati