मैं एक Maven प्लगइन और एक साधारण मोजो कि कुछ हद तकMaven प्लगइन मोजो कॉन्फ़िगर डिफ़ॉल्ट पैरामीटर मान
public abstract class AbstractSetupMojo extends AbstractMojo {
@Parameter(property="targetHost", defaultValue="localhost")
private String targetHost;
@Parameter(property="targetPort", defaultValue="27017")
private Integer targetPort;
@Parameter(property="targetDbName", required=true)
private String targetDbName;
@Parameter(property="sourceHost", defaultValue="${mojo.configuration.targetHost}")
private String sourceHost;
@Parameter(property="sourcePort", defaultValue="${mojo.configuration.targetPort}")
private Integer sourcePort;
@Parameter (property="sourceDbName", defaultValue="${mojo.configuration.targetDbName}")
private String sourceDbName;
@Parameter(property="scriptsPath")
private File scriptsPath;
}
अन्य mojos यह एक बढ़ा रहे हैं के करीब लग रहा है। तो, विचार source*
पैरामीटर को target*
पैरामीटर के मानों पर सेट करना है। इसके अलावा कुछ डिफ़ॉल्ट मान सेट हैं।
परीक्षण में मैं जैसे
public class GenerateMojoTest extends AbstractMojoTestCase {
protected void setUp() throws Exception {
super.setUp();
}
public void testConfiguration() throws Exception {
File pom = getTestFile("src/test/resources/test-project-1/pom.xml");
assertNotNull(pom);
assertTrue(pom.exists());
GenerateMojo generateMojo = (GenerateMojo)lookupMojo("generate", pom);
assertThat(generateMojo.getSourceDbName()).isEqualTo(generateMojo.getTargetDbName());
assertThat(generateMojo.getSourcePort()).isEqualTo(generateMojo.getTargetPort()).isEqualTo(27017);
assertThat(generateMojo.getSourceHost()).isEqualTo(generateMojo.getTargetHost()).isEqualTo("localhost");
}
}
कुछ परीक्षण में पोम फ़ाइल में ब्याज का हिस्सा परीक्षण
तरह <plugin>
<groupId>com.ffy</groupId>
<artifactId>setup-maven-plugin</artifactId>
<!--
<configuration>
<scriptsPath>src/test/resources/temp</scriptsPath>
</configuration>
-->
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
में विफल रहता है, क्योंकि सभी मोजो मापदंडों अगर मैं अशक्त हैं लग रहा है <configuration>
पर ध्यान दें, अगर मैं इसे अस्वीकार करता हूं तो केवल scriptsPath
सेट है। अन्य पैरामीटर null
हैं।
क्या मुझे पूरी तरह कॉन्फ़िगर किए गए मोजो के लिए अपने परीक्षणों में कुछ और करना है?
मैं
protected GenerateMojo setupMojo(final File pom) throws ComponentConfigurationException, Exception {
final MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest();
final ProjectBuildingRequest buildingRequest = executionRequest.getProjectBuildingRequest();
final ProjectBuilder projectBuilder = this.lookup(ProjectBuilder.class);
final MavenProject project = projectBuilder.build(pom, buildingRequest).getProject();
final MavenSession session = newMavenSession(project);
final MojoExecution execution = newMojoExecution("generate");
final GenerateMojo mojo = (GenerateMojo) this.lookupConfiguredMojo(session, execution);
return mojo;
}
बजाय lookupMojo
साथ लंबे समय तक दृष्टिकोण की कोशिश की लेकिन वह एक सा नहीं बदला।
ऐसा लगता है कि 'maven-plugin-test-harness' को जाने का लंबा सफर तय है। – EvgeniySharapov
ओह, ऐसा लगता है कि यह करता है, लेकिन मैं आपको आश्वस्त करता हूं कि यह इस तरह से रहा है क्योंकि मैवेन 2.x बाहर आया, इसलिए ... वास्तव में कुछ समय पहले (अगर कभी) इसे संबोधित किया जा सकता है। – carlspring
http://stackoverflow.com/questions/31528763/how-to-populate-parameter-defaultvalue-in-maven-abstractmojotestcase/36064396 में एक संबंधित उत्तर है - उत्तर mojoRule.lookupConfiguredMojo() का उपयोग करने का सुझाव देता है जो सेट लगता है पैरामीटर पर डिफ़ॉल्ट। – wemu