所以我发现,我使用Maven的次数越多,我发现它就越令人讨厌,特别是在使用不同的Maven版本构建相同的项目时。这是意料之中的吗?
下面是几个例子:
我有一个要部署到JBoss上的.ear。当我在类路径上引入wsdls、xsds和生成的类时,我将.jar作为依赖项引入,然后将其解压到.ear中。为此,我使用了解包依赖项目标。看起来像这样。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>unpack-wsimport</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>url.projectName</includeGroupIds>
<includeArtifactIds>projectName-wsimport</includeArtifactIds>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>使用Maven 3.0.3 (项目最初是在Maven 3.0.3中构建的),可以很好地工作。切换到Maven 2.0.9,突然它就不起作用了,Maven网站上说这个插件从1.0版本就支持了,那么为什么它不能工作呢?
同样,反之亦然,当我尝试做这个项目的maven发行版时,使用Maven 2.0.9可以正确地准备和执行,但是3.0.3在SVN中标记版本时不会复制某些文件。
还有谁在Maven的不同版本之间切换以构建项目时发现了这样的错误?
发布于 2012-03-14 19:46:16
首先,看起来你并不理解像ear这样的maven方式,因为在EAR中,你必须添加应该放入EAR中的依赖项,而不是通过依赖插件,你必须将它们作为依赖项使用。
例如:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>webgui</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>service</artifactId>
<version>${project.version}</version>
<type>ejb</type>
</dependency>
</dependencies>但更好的方法是为maven-ear-plugin使用正确的配置。
基于您提供的信息,我希望有一个包含不同模块(如web-part,wsdl-part等)的多模块构建。它会被装进一个耳朵里。这将导致如下所示的结构:
+-- root
+-- pom.xml
+-- war
+-- pom.xml
+-- wsdl
+-- pom.xml
+-- ...
+-- ejb
+-- pom.xml
+-- ear
+-- pom.xml 此外,看起来你需要研究像多模块项目这样的项目的组织。这就是一个这样的example。关于Maven的documentation是一个很好的开始,也是Maven by Example的最后一步。
关于你关于1.0的观点,我不能承认这一点,因为我在非常大的项目(100个模块+)...Furthermore中工作了很长时间,我想知道这个插件在什么地方可以与1.0版本一起工作。
尽管它看起来并不是这样的,但你还是阅读了发行说明。在Maven2.0.X,2.2.X和3.0.X ..If之间有很多不同的版本,你真的需要使用不同的Maven2.0,2.2和3.0版本来运行你的构建。这是可以做到的,并且正在发挥作用,但根据技术细节,特别是2.2.X和3.0.X之间的技术细节,存在一些缺点(报告内容)。我建议只使用一个Maven版本来构建您的工件(目前是3.0.3/3.0.4)。另一个提示是,在Maven2/3上工作的Maven构建永远不会在Maven1上运行,因为POM已经发生了戏剧性的变化。
https://stackoverflow.com/questions/9700744
复制相似问题