首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一般的Maven错误

问一般的Maven错误
EN

Stack Overflow用户
提问于 2012-03-14 19:08:10
回答 1查看 106关注 0票数 0

所以我发现,我使用Maven的次数越多,我发现它就越令人讨厌,特别是在使用不同的Maven版本构建相同的项目时。这是意料之中的吗?

下面是几个例子:

我有一个要部署到JBoss上的.ear。当我在类路径上引入wsdls、xsds和生成的类时,我将.jar作为依赖项引入,然后将其解压到.ear中。为此,我使用了解包依赖项目标。看起来像这样。

代码语言:javascript
复制
<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的不同版本之间切换以构建项目时发现了这样的错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-14 19:46:16

首先,看起来你并不理解像ear这样的maven方式,因为在EAR中,你必须添加应该放入EAR中的依赖项,而不是通过依赖插件,你必须将它们作为依赖项使用。

例如:

代码语言:javascript
复制
  <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等)的多模块构建。它会被装进一个耳朵里。这将导致如下所示的结构:

代码语言:javascript
复制
   +-- 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已经发生了戏剧性的变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9700744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档