在我的項目中,我有一個子項目自動更新程序。基本上是一個在更新可用時提取並運行的jar文件。使用Maven添加另一個項目的jar作爲資源
是否有可能編譯子項目,然後將輸出罐子作爲generated-resource
使得updater.jar
被包含在最終的罐子如:事先
Project-1.0.jar
|-updater.jar
|-Main.class
|-B.class
感謝您的幫助(我對Maven來說是新的)
在我的項目中,我有一個子項目自動更新程序。基本上是一個在更新可用時提取並運行的jar文件。使用Maven添加另一個項目的jar作爲資源
是否有可能編譯子項目,然後將輸出罐子作爲generated-resource
使得updater.jar
被包含在最終的罐子如:事先
Project-1.0.jar
|-updater.jar
|-Main.class
|-B.class
感謝您的幫助(我對Maven來說是新的)
此任務要求maven-assembly-plgin
或maven-dependency-plugin
(我期待更新也maven項目)這個shoudl是maven-dependency-plugin的正確配置[我沒有測試這個,你可能還需要把更新到項目depndencies]
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>company.com.project</groupId>
<artifactId>Updater</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<outputDirectory>${project.build.outputDirectory}/classes</outputDirectory>
<destFileName>updater.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
如果你的小罐子也是用Maven構建的,那將會很好。 然後讓我們說你的小罐子POM的包含此:
<groupId>company.com.project</groupId>
<artifactId>Updater</artifactId>
<version>0.0.1-SNAPSHOT</version>
那麼你的項目,1.0應該使用這種依賴關係:
<dependency>
<groupId>company.com.project</groupId>
<artifactId>Updater</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
子項目添加到您的父項目如下
<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>1.0.0</modelVersion>
<groupId>Project-1.0</groupId>
<artifactId>myproject</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Project-1.0</name>
<modules>
<module>../updater</module>
</modules>
...
</project>
然後在你的updater項目中pom文件做如下修改
<?xml version="1.0"?>
<project>
<parent>
<artifactId>myproject</artifactId>
<groupId>Project-1.0</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>Project-1.0</groupId>
<artifactId>updater</artifactId>
<version>1.0-SNAPSHOT</version>
...
</project>
當您編譯父項目時,子項目會自動進行編譯。
然後添加子項目罐子在您的瓦罐中,加下面的插件在父母的pom.xml
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<copy todir="${project.build.directory}/lib">
<fileset dir="${location of updater1.0.jar}"/>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
OP希望在最終的jar包中包含他的更新程序,而不是將其添加爲依賴項。 – 2013-03-20 13:57:26
對不起,這個問題在我寫答案時可能已經更新了。 – 2013-03-22 16:26:17
朋友們,如果我們在同一個工作區中有兩個項目,在日食中,我們可以簡單地添加依賴關係嗎?沒有父母子女(多母馬)需要? ,我簡單地添加了像@PauloPedroso這樣的縮寫,但我失去了工件。我試圖清理/建立所有項目,一段時間它消失了,現在錯誤在那裏...請幫助我。 – 2015-01-12 07:08:37