जोड़ सकते हैं आप Cheesus द्वारा प्रदान की जिस तरह से उपयोग कर सकते हैं। जब मैं मौजूदा ईएआर से निपट रहा हूं, तो मैं उन परीक्षणों को चलाने के लिए पसंद करता हूं जो परीक्षणों को चलाते हैं, जो मैंने विशेष परीक्षणों से अन्य परीक्षण ईजेबी के साथ किया है। मेरे तैनाती इस तरह दिखता है:
@Deployment
public static EnterpriseArchive createDeployment() {
String path = System.getProperty(EAR_PATH);
File f = new File(path);
EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, f);
final JavaArchive foobarEjb = ShrinkWrap.create(JavaArchive.class, "foobarEjb.jar");
foobarEjb.addClasses(
MyTest1.class,
MyTest2.class);
ear.addAsModule(foobarEjb);
final WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
.addAsWebInfResource("WEB-INF/web.xml")
.addAsWebResource("index.xhtml");
ear.addAsModule(Testable.archiveToTest(war));
modifyApplicationXML(ear);
modifyJBossDeploymentStructure(ear);
return ear;
}
सूचना तरीकों application.xml
और jboss-deployment-structure.xml
संशोधित करने के लिए। मुझे इन्हें जार को ईएआर के अंदर एक ईजेबी मॉड्यूल के रूप में प्रारंभिक रूप से प्रारंभ करने की आवश्यकता है।
उदाहरण है कि कैसे मैं application.xml
बदल सकता हूँ:
private static void modifyApplicationXML(EnterpriseArchive ear) {
Node node = ear.get("META-INF/application.xml");
DescriptorImporter<ApplicationDescriptor> importer = Descriptors.importAs(ApplicationDescriptor.class, "test");
ApplicationDescriptor desc = importer.fromStream(node.getAsset().openStream());
String xml = desc.exportAsString();
// remove lib definition
xml = xml.replaceAll("<library-directory>.*<\\/library-directory>", "");
desc = (ApplicationDescriptor) importer.fromString(xml);
// append foobar test ejbs
desc.ejbModule("foobarEjb.jar");
// append test war
desc.webModule("test.war", "/test");
// append lib definition
desc.libraryDirectory("lib/");
Asset asset = new StringAsset(desc.exportAsString());
ear.delete(node.getPath());
ear.setApplicationXML(asset);
}