我目前在Maven中構建EAR文件。當我建立它,我得到以下我的目標文件夾:將EAR中的所有依賴項移至Maven中的子文件夾
-target/
-MyProject.ear
-MyProject/
-MainProject.jar
-Dependency.jar
如果我在7Zip的開拓MyProject.ear
,我看到了存在於MyProject/
我被要求更改此相同的文件結構讓所有的依賴是一個子文件夾,如:
:-target/
-MyProject.ear
-MyProject/
-MainProject.jar
-lib/
-Dependency.jar
現在我可以進行以下更改到我的pom.xml文件,使這項工作對於一個依賴
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<modules>
<jarModule>
<groupId>Dependency</groupId>
<artifactId>Dependency</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
但是在真實的項目中,我有大約30個依賴關係。我可以爲每個依賴項手動添加一個<jarModule>
標記,但理想情況下,我希望它自動將所有依賴項移動到子目錄(排除MainProject.jar
)。
我希望我能一次聲明<jarModule>
和使用的groupId和artifactId的,like Maven allows with exclusions通配符:
<!-- Moving all for the time being, add the exclusion if it works -->
<jarModule>
<groupId>*</groupId>
<artifactId>*</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
我希望上面採取一切文物,並把它們放到一個lib文件夾。 Unfortunatley,這似乎並沒有在Maven 3.2.1中工作,提供一個錯誤說Artifact[jar:*:*] is not a dependency of the project
那麼在Maven中構建EAR時,如何將所有依賴關係移動到子文件夾?
那麼這個訣竅在我的回答中已經提到了否?也許你可以接受它,因爲它有助於找出解決方案,thx。 – tmarwen
@tmarwen您的回答包含''標籤,這是正確解決方案的必要組件,但通配符不正確,最終解決方案無法正常工作。因爲它不是一個有效的解決方案,所以我會接受這個,因爲它對我和希望其他人都有效。 –
Thunderforge
對不起,通配符是用你的jar組替換的,工件ID不能放在原來的位置......我的技巧是在** maven-ear-plugin **配置下添加'' 。 –
tmarwen