Run a build on generated project during integration test
--------------------------------------------------------

                 Key: ARCHETYPE-334
                 URL: http://jira.codehaus.org/browse/ARCHETYPE-334
             Project: Maven Archetype
          Issue Type: New Feature
          Components: Plugin
    Affects Versions: 2.0-alpha-5
            Reporter: Jesse Glick
            Priority: Minor


Currently it seems that {{archetype:integration-test}} just creates some 
projects from the archetype with defined parameters and compares their contents 
to "golden" copies. (By the way 
http://maven.apache.org/archetype/maven-archetype-plugin/integration-test-mojo.html
 does not document this in any way; I had to read {{IntegrationTestMojo}} 
source to find this out.)

While that might be useful if you happen to have very complex Velocity 
templates and need to test that property substitution works the right way with 
different inputs, most archetypes have rather simple templates that just 
substitute {{artifactId}} and the like, in which case verifying that the 
created POM matches some fixed text is worse than useless: if you make any 
changes to the archetype, you are simply going to make identical changes to the 
test's golden files.

What would be much more useful in my experience is to check that the newly 
generated project actually builds. For example, run {{mvn post-clean verify}} 
and check that at a minimum the build completes normally. This would catch 
common mistakes you might make when editing archetypes: mistyping a plugin or 
dependency name, introducing compilation errors into Java sources, etc. It 
would also be valuable to check that no warnings are emitted - such as the 
infamous {{File encoding has not been set...}} message when 
{{project.build.sourceEncoding}} has been forgotten.

(You could also run {{mvn post-site}}, checking for warnings/errors, and 
compare {{target/site}} to a golden copy.)

CI builders running integration tests might also do so with a pristine local 
repository (plus cache manager mirroring official public repos), which would 
catch accidental references to unreleased plugin/dependency versions that the 
archetype developer happened to have in their local repo.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to