2011-04-05 64 views
1

我是新来的maven。我有产品结构如下禁用在父pom中定义的maven版本插件

myWebProduct 
    pom.xml 
    coreModule 
    webModule 
    htmlTestModule 

Maven的发布插件在pom.xml文件的公司水平,这是myWebProduct父定义。它已经设置发布插件运行默认目标deploy和默认准备目标clean verify install

我想发布myWebProduct级别的产品,除了我想跳过发布版本htmlTestModule之外,它的工作正常。因为deploy生命周期htmlTestModule将导致将war文件部署到远程Tomcat服务器,并且我不希望在发布过程中发生这种情况。

我试图在htmlTestModulepom.xml中添加以下内容。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.1</version>  
    <configuration> 
    <skip>true</skip> 
    <preparationGoals>clean validate</preparationGoals> 
    <goals>testCompile</goals> 
    </configuration> 
</plugin> 

但是当运行'mvn release:perform'at myWebProduct。我已经看到部署目标仍然在htmlTestModule上执行。任何人都可以帮忙吗?

而且我也试过下面就htmlTestModule

<plugins>   
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.5</version>  
    <executions> 
     <execution> 
     <id>donotRunMe</id> 
     <phase>none</phase> 
    </execution>      
    </executions> 
</plugin> 

尽管如此,部署目标总是htmlTestModule执行。 谢谢

回答

0

我想你在这里采取了错误的做法。让我解释。

maven的deploy阶段并不意味着部署到远程服务器或类似的东西。这意味着要部署到远程存储库。

因此,我认为你不应该试图跳过部署阶段的模块中,而是从deploy阶段未配合部署到远程Tomcat服务器,通过使例如特定目标。

+0

感谢您的回复。我已经将我的部署war文件绑定到了准备包阶段的tomcat服务器,因为我的测试目标依赖于此。你对这种测试包有什么建议? – user639812 2011-04-07 16:23:19

+0

这一切都取决于,但我的一般规则是,我的构建应该是自包含的,包括(集成)测试。 所以,我会考虑部署在本地(构建)Tomcat实例(例如使用Cargo或Tomcat插件)并在那里测试。这样您的构建不依赖于需要特定配置的任何外部资源。 如果这需要太多的时间来运行版本,那么我建议你找到一种方法来跳过对tomcat实例的测试,而不是完整的部署阶段。 此测试的最佳阶段可能是集成测试阶段。 HTH。 – SaM 2011-04-09 07:25:56