我正在开发一个新项目,它是产品的插件。
我使用maven构建我的插件(zip)但我需要引用我的Eclipse工作区中定义的产品的源代码。但是这个源代码不是由Maven管理的,我不想迁移它。
是否可以通过任何方式引用此工作区项目? (maven插件,解决方法欢迎)。
Eclipse中的编译只需要依赖项,但不会在插件本身(provided
范围)中打包。
我在Eclipse中也有m2e,我想在进行“Maven更新”时保留这个配置。
更新:我正在寻找一个可以在命令行上使用mvn clean install
的解决方案,因为我希望能够从CI平台(例如Jenkins)执行构建
答案 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插件在链接到编译阶段的外部项目中触发源代码的编译。您甚至可以将.class文件复制到目标文件夹中,以便运行时类路径找到它们
答案 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库,它们不包含所有源代码(两者都是编译我的代码所必需的)。