如何在简单的 Java 项目中使用 pom.xml 文件

How to use pom.xml file with a simple Java project

我在 Eclipse 中创建了一个简单的 Java 项目,并在根文件夹中创建了一个 pom.xml 文件。现在我想通过执行 pom.xml 文件来下载所有 Spring 框架依赖项。

是否可以在一个简单的 Java 项目而不是 Maven 项目中使用 pom.xml 文件并下载所有 Spring 框架依赖项?

我已经右键单击了 pom.xml 文件和 运行 作为 "Maven install"

我在控制台上找到了这个。

[INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1

    [INFO]  


[INFO] ------------------------------------------------------------------------
[INFO] Building my-app 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-app ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ my-app ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ my-app ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ my-app ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ my-app ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-app ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/target/my-app-1.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ my-app ---
[INFO] Installing /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/target/my-app-1.jar to /home/oodles/.m2/repository/com/qasim/app/my-app/1/my-app-1.jar
[INFO] Installing /home/oodles/Documents/MyWorkspace/MySpringProjectMaven/pom.xml to /home/oodles/.m2/repository/com/qasim/app/my-app/1/my-app-1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.013 s
[INFO] Finished at: 2015-03-18T23:32:49+05:30
[INFO] Final Memory: 8M/150M
[INFO] ------------------------------------------------------------------------

我不明白点击 Maven 安装后发生了什么。一些文件夹使用 my-app.jar 创建了名为 target 的文件夹,我添加了这个 jar 来构建路径。但我认为这是行不通的。我使用以下代码测试 class:

package com.qasim.app;


public class Test {
      public static void main(String[] args) {
          ApplicationContext context = new ClassPathXmlApplicationContext("MySpringConfig.xml");

          Restaurant obj = (Restaurant) context.getBean("restaurantBean");
          obj.greetCustomer();
       }
}

和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.qasim.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
    <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>

</dependencies>
</project>

但是在测试 class 编译器在应用程序上下文行抱怨 "create class named applicationContext" 如果在 运行ning "Maven install" 命令之后下载了依赖项那么它应该显示一些 "Import hint" 应用上下文

更新: 一个开始的建议:我真的建议参考这里的官方文档 http://maven.apache.org/guides/index.html - 花点时间至少阅读下面的要点 "Introductions" 因为它会解释你如何使用 Maven 以及它是如何使用的有效 ;)

我复制并粘贴了您的 pom.xml 并且可以编译您的 Java class(我删除了 Restaurant 引用并为 Spring 配置创建了一个空文件)。

查看您的构建输出:

[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ my-app ---
[INFO] No sources to compile

Maven 告诉您它没有编译任何源代码——这强烈暗示您没有使用正确的标准 Maven 文件夹结构。

我刚刚使用您的 pom.xml 和 Maven 标准文件夹结构设置了一个小型项目,如下所示:

(注意:由于公司安全限制,我在办公室内写作时不得不删除路径)

如果你在 src/main/java 下设置你的 classes 并将你的配置放在 src/main/resources 下,Maven 将能够找到 class 并编译它,同时它也会把你的资源放在你的罐子里。在我的例子中,我刚刚创建了一个空文件 MySpringConfig.xml ,当试图加载 ApplicationContext 时显然不会工作,但是你可以在下面的堆栈跟踪中看到可以找到并加载文件本身(但是在解析它时空内容不能满足 SAX 解析器的要求——我敢打赌你的看起来更好 :)。

尝试一下,不要忘记查阅 Maven 参考,因为我没有深入了解文件夹结构等。;)

是 - 您应该可以右键单击 pom.xml,选择 run AS,例如选择 Maven install(对应于 mvn install)或定义阶段在 Maven build...

下处理

或者,您应该能够为 Maven 创建一个新的启动配置,并将 Base directory: 指向您的 pom.xml 所在的位置。

注意:据我所知,您需要在 Eclipse 中安装 M2-Plugin 才能与 Maven 一起工作(我不太了解这个有趣的工具,但我这里有一个 Eclipse Juno,它能够在 "simple java application" 项目)。

注意:如果您只需要依赖项并使用 Maven 作为 "helper" 下载它们,您始终可以从大多数远程存储库手动下载 Jar,例如此处:http://mvnrepository.com/search?q=spring