当前位置: 首页 > 知识库问答 >
问题:

在pom.xml中使用maven构建java项目的基本标签

楚骞尧
2023-03-14

我正在使用maven构建我的java项目,但未能成功。因此,任何人都可以告诉我pom中需要的基本标记及其相应值。xml来构建项目?此外,如何从命令行手动添加Storm依赖项?

我的项目目录结构:

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

最初,我尝试了Maven Link并创建了< code>pom.xml,如下所示:

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

但是,之后我使用< code>mvn package。它抛出这个异常:

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

之后,我使用这个链接Maven link 2并创建了pom.xml,如下所示:

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

这一次它抛出了以下异常:

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

共有3个答案

乐正育
2023-03-14

最重要的标记是错误消息中提到的标记:

<modelVersion>4.0.0</modelVersion>

你在pom文件中漏掉了。

池照
2023-03-14

您应该至少有这三个标签:

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

这是maven识别工件的方式,使用这3个属性(当您定义依赖项时)。

奚卓
2023-03-14

关于您的结构:

Maven假设java类在src/main/java中,资源(您的文件夹资源和您的META-INF目录中的任何内容)在src/main/Resources中。即使您稍微调整一下maven,您描述的目录结构也不会起作用,因为root dir(递归)中的java类。为什么不使用默认结构?您真的应该有充分的理由来更改它。

Storm依赖关系:

您的POM中已经有指向外部存储库的链接。但它被评论过了。这应该像预期的那样起作用。如果您在代理之后,则必须在settings.xml中定义代理

 类似资料:
  • 我有一个基本的maven项目,其文件夹结构为:-main和-test目录。 我在主源目录中有一个包,它由几个类组成,比如a.class,B.class和c.class,它们都在同一个包下。所有类之间都有依赖关系。为了进行适当的单元测试,并减少每个类的依赖关系,我编写了每个a、b和c类的存根类,将它们定义为具有相同的包,并将它们放在测试源目录中。然后我运行:mvn测试 很好,现在首先从类路径中找到并

  • 我正在学习RESTfulWeb服务教程http://www.concretepage.com/spring-4/spring-4-rest-web-service-json-example-tomcat.Is具有spring框架依赖项。我没有下载二进制文件并将其放入lib目录,而是在pom中包含了一个依赖项。xml类似 当我右键单击-

  • 我们的机器上有Maven。我们使用的是Maven 2.2.1和CentOS 6.0。当我们使用以下命令创建基础项目时 mvn原型:创建-e-Darch etypeGroupId=com.jivesoftware.maven-Darch etypeartifactId=maven-jive-plugin-ArchetypeVersion=5.0.2-SNAPSHOT-Dgroup pId=com.d

  • 问题内容: 我有一个场景,其中我的项目需要在不同的JDK中进行编译,并且所生成的工件名称应根据所使用的JDK而有所不同。例如,如果项目名称为MyProject,并且我调用mvn install,则需要在JDK 1.4和JDK 1.5中对其进行编译,最后我得到了两个来自同一项目的jar(MyProjectJDK14-1.0和MyProjectJDK15-1.0)。有可能实现这一目标吗? 问题答案:

  • mvn-版本 Apache Maven 3.6.1(d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555;2019-04-04T21:00:29 02:00)Maven主页:C:\Apps\Apache-Maven-3.6.1\bin。。Java版本:11.0.13,供应商:Oracle Corporation,运行时:C:\Apps\jdk-11.0.13_windo

  • Android plugin 提供了大量 DSL 用于直接从构建系统定制大部分功能。