Ý tưởng của Markus Lux cũng có thể được áp dụng với một giải pháp Maven2, với các cấu hình quản lý:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
...
</build>
<profiles>
<profile>
<id>env-foo1</id>
<!-- Activated when -Denv=foo1 is given as parameter. -->
<activation>
<property>
<name>env</name>
<value>foo1</value>
</property>
</activation>
<properties>
<deploy.env>xxx</deploy.env>
<tomcat.manager>http://foo1/manager</tomcat.manager>
<tomcat.manager.username>foo</tomcat.manager.username>
<tomcat.manager.password>bar</tomcat.manager.password>
</properties>
</profile>
<profile>
<id>env-foo2</id>
<!-- Activated when -Denv=foo2 is given as parameter. -->
<activation>
<property>
<name>env</name>
<value>foo2</value>
</property>
</activation>
<properties>
<deploy.env>dev</deploy.env>
<tomcat.manager>http://foo2/manager</tomcat.manager>
<tomcat.manager.username>foo</tomcat.manager.username>
<tomcat.manager.password>bar</tomcat.manager.password>
</properties>
</profile>
...
</profiles>
Sau đó, bạn sẽ chỉ cần chạy X lần so với lệnh mvn, với tham số đầy đủ (-Denv = foo1, -Denv = foo2 ...)
Bên cạnh đó, bạn có thể nâng cao giải pháp này bởi chúng tôi nhập tính năng Ma trận của máy chủ Hudson Tích hợp liên tục. Tôi đã đưa ra một giải thích ngắn về tính năng này here.
Về cơ bản, bạn chỉ cần xác định công việc "bình thường" Maven2 ở Hudson và với tính năng Ma trận, bạn có thể yêu cầu Hudson chạy công việc này nhiều lần, mỗi lần một môi trường. Nói cách khác, bạn tạo việc Hudson của bạn, và sau đó bạn xác định "trục môi trường" với tất cả các giá trị có thể cho env tham số:
Hudson sau đó sẽ xây dựng ứng dụng với lệnh mvn và với tham số -de nv = foo1 .Sau khi xây dựng này được hoàn thành, nó sẽ xây dựng ứng dụng tương tự nhưng với tham số -Denv = foo2, và vân vân ...
Bằng cách này, Hudson sẽ triển khai ứng dụng của bạn trong mọi môi trường. ..
tôi hy vọng giải pháp của tôi sẽ giúp bạn đạt được mục tiêu của mình ...
Holy crap, điều này có khả năng cực kỳ hữu ích, vì Hudson chính xác là những gì tôi đang nhắm mục tiêu bằng cách sử dụng ... – cgp
Điều thú vị là, điều này tương tự như liên kết mà tôi đưa ra là gợi ý, nhưng nó không rõ ràng. Cant chờ đợi để thử nó. – cgp
Có cách nào để làm điều này mà không cần phải gọi maven X lần? dường như với tôi rằng việc xây dựng lại chỉ để triển khai là tốn thời gian, cộng với nó có thể dẫn đến vô tình triển khai trên một cụm nếu có thay đổi mới cam kết với mã trong các bản dựng này – maverick