如何从maven项目引用非maven项目(在eclipse工作区中)?

时间:2014-04-15 09:21:26

标签: java eclipse maven dependency-management

我正在开发一个新项目,它是产品的插件。

我使用maven构建我的插件(zip)但我需要引用我的Eclipse工作区中定义的产品的源代码。但是这个源代码不是由Maven管理的,我不想迁移它。

是否可以通过任何方式引用此工作区项目? (maven插件,解决方法欢迎)。

Eclipse中的编译只需要依赖项,但不会在插件本身(provided范围)中打包。

我在Eclipse中也有m2e,我想在进行“Maven更新”时保留这个配置。

更新:我正在寻找一个可以在命令行上使用mvn clean install的解决方案,因为我希望能够从CI平台(例如Jenkins)执行构建

3 个答案:

答案 0 :(得分:3)

只需使用Project - >属性 - > Java构建路径 - >项目 - >添加

如果需要在Eclipse外部编译它,可以在物理jar位置添加依赖项:

 <dependency>
    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/test.jar</systemPath>
</dependency>

答案 1 :(得分:0)

您可以考虑使用antrun插件在链接到编译阶段的外部项目中触发源代码的编译。您甚至可以将.cl​​ass文件复制到目标文件夹中,以便运行时类路径找到它们

答案 2 :(得分:0)

因为我已经编译了源代码而且我不需要重新编译它们(或修改任何东西),所以我决定使用pom程序集打包它们。

我创建了一个单独的项目(在与我的插件开发项目相同的父项下),名为openemm-src:

openemm-src

<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> <groupId>openemm.plugin.dev</groupId> <artifactId>plugin</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>openemm-src</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <name>OpenEMM Source Code Library</name> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>src/assembly/src-plugin.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> <xecution> </executions> </plugin> </plugins> </build> </project> 项目的pom.xml如下所示:

src/assembly/src-plugin.xml

和文件<assembly> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>build/classes</directory> <outputDirectory></outputDirectory> </fileSet> </fileSets> </assembly>

<dependency>
    <groupId>openemm.plugin.dev</groupId>
    <artifactId>openemm-src</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

在此之后,我从兄弟姐妹的项目中引用了这样的jar:

{{1}}

此解决方案看起来更像是一种解决方法,但这是因为OpenEMM项目没有任何“插件模板项目”可以使用Maven进行管理。

请注意,这只是一个部分配置,我还要引用Agnitas库,它们不包含所有源代码(两者都是编译我的代码所必需的)。