2010-08-02 144 views
10

我有一个使用Maven的大型Java Web应用程序项目,我需要启动一个新的项目,它将共享大部分相同的代码(所以我不必重复工作),但不是全部。我将把共享代码复制到一个新项目中(我们称之为“root”)。如何使我的原始项目依赖于源代码的根?我不能仅仅因为我想在编译之前更改源代码而使用它。你如何使用Maven共享两个项目的源代码?

回答

8

你应该重构你的项目。

  1. 标识通用代码
  2. 提取到自己的Maven模块
    2.1。通常网络应用程序是多模块的,所以如果你打算在两个网络应用程序之间共享公用库,那么将公用库分成它自己的组编号
  3. 构建并将jar文件安装到您的存储库中
  4. 更改网络应用程序的poms取决于您的新库
+0

适用于我。谢谢。 – teteArg 2014-10-29 22:10:36

2

创建一个包含所有共享代码的maven项目。保持这个项目的包装(在主要的pom.xml中)为jar。这将有助于使您的使用这个项目类库。

在所有访问共享代码的项目中,根据您的需要为该项目添加依赖项。 (编译,提供)。

现在打包并安装共享项目,然后再构建任何相关项目。这会将共享项目添加到您的本地存储库,然后您的相关项目可以使用该项目。

为共享项目和相关项目添加示例pom.xml。

共享项目pom。

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <artifactId>com.myspace.test</artifactId> 
    <groupId>com.myspace</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <groupId>com.myspace</groupId> 
    <artifactId>shared</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>shared-module</name> 
    <description>shared module which contains code shared by other modules.</description> 
</project> 

依赖项目的pom。

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <artifactId>com.myspace.test</artifactId> 
    <groupId>com.myspace</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <groupId>com.myspace</groupId> 
    <artifactId>dependent-module</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>dependent-module</name> 
    <description>Dependent module.</description> 
    <dependencies> 
    <dependency> 
     <groupId>com.myspace</groupId> 
     <artifactId>shared</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
</project> 

如果需要此类组织,可以选择添加父项目。 希望这有助于。

0

安装共享代码,用罐子当前的包装设置:

mvn install 

然后,您可以创建在孩子的pom.xml从你是什么仓库的依赖(即不共享的代码)安装到。

这是一个很好的做法,不仅可以避免重复工作,而且还可以在需要更改共享资源的实施时使用。您可以在一个地方更改逻辑,将其安装到存储库,而其他依赖该代码的项目在下次编译时将使用新代码。

相关问题