如何添加Mavenized Projects的参考

时间:2011-10-31 09:14:41

标签: java spring java-ee maven-2 maven

我有两个mavenized项目

  1. Project_A:Java Project
  2. Project_B:Java Web Project
  3. 早些时候,在对两个项目进行整合之前,我在Project_B中有Project_A的refrence(buildpath)。 现在我用maven2配置了两个项目。我的问题是,如何在Project_B中添加Project_A的引用,以便Project_B的WAR可以运行

    到目前为止,我已经尝试了以下似乎有效的代码块,但是在运行时Project_B的WAR在applicationContext中抛出异常,无法启动Project_A类的实例。

    1- Project_A被清理并安装在名为“myproject-1.0.jar”的本地存储库中 其中build snippet(Project_A的POM)如下#

    已编辑的部分

      <modelVersion>4.0.0</modelVersion>
       <groupId>org.myurl<groupId>
    <artifactId>projectA</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>${project.artifactId}-${project.version}</name>
    
    
    
    
    build>
            <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
            <outputDirectory>${basedir}/target/classes</outputDirectory>
            <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
            <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
            <resources>
                <resource>
                    <directory>${basedir}/src/main/resources</directory>
                </resource>
            </resources>
            <testResources>
                <testResource>
                    <directory>${basedir}/src/test/resources</directory>
                </testResource>
            </testResources>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <optimize>true</optimize>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    
    1. Project_B的POM片段,我在其中添加已安装的Project_A jar

               <dependency>
          <groupId>org.myurl</groupId>
          <artifactId>projectA</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
      </dependency>
      
    2. 提前感谢您的建议。

      答案: 实际上maven没有任何问题。 POM中的上述配置绝对正确。我在/ Resources下移动了属性文件,后来我忘了更改使用属性文件的那些路径。

      然而,我感谢 Dolphin 和Nicola Musatti 的建议。

1 个答案:

答案 0 :(得分:0)

你很好,pom片段很好你现在需要做的是制作父项目(Maven Reactor)。因此,您将创建新项目并在该项目中定义模块(项目A和项目B)。您将在项目A和项目B中引用该父项,这将起到作用。谷歌maven父母看看它是如何完成的。

在构建项目B之后,maven将首先构建项目A并在项目B之后。

你的方法也应该起作用(只是它不是一种正确的方法)。所以你可能在groupId版本中犯了错误。您可以通过构建项目A然后检查本地maven存储库来检查这一点。如果没有出错,你应该看到文件夹结构。

组织/ myurl /了projectA-1.0.jar

项目结构如下:

项目亲 项目一 项目-B

在您定义的项目父级中:

<groupId>foo.bar</groupId>
<artifactId>project-parent</artifactId>
<version>00.01-SNAPSHOT</version>
<name>FooBar:: Parent Project</name>
<packaging>pom</packaging>

<modules>
    <module>../project-a</module>
    <module>../project-b</module>
</modules>

在项目-a和项目-b中添加:

<parent>
    <groupId>foo.bar</groupId>
    <artifactId>project-parent</artifactId>
    <version>00.01-SNAPSHOT</version>
</parent>

在project-b中,您将引用project-a

    <dependency>
        <groupId>foo.bar</groupId>
        <artifactId>project-a</artifactId>
        <version>00.01-SNAPSHOT</version>
    </dependency>

构建父级后,它应该正确构建所有模块。不要使用插件,忘了我说Maven Reactor:)