2010-11-03 15 views
31

में आवश्यक होने पर निर्देशिका बनाएं, मैं थ्रिफ्ट के जावा स्रोत जेनरेट करने के लिए मेवेन-एक्जिक-प्लगइन का उपयोग कर रहा हूं। यह बाहरी थ्रिफ्ट कंपाइलर का उपयोग करता है और आउटपुट निर्देशिका निर्दिष्ट करने के लिए -o का उपयोग करता है, "लक्ष्य/जेनरेट-स्रोत/थ्रिफ्ट"।मैवेन

समस्या न तो maven-exec-plugin है और न ही थ्रिफ्ट कंपाइलर स्वचालित रूप से आउटपुट निर्देशिका बनाते हैं, मुझे मैन्युअल रूप से इसे बनाना होगा। क्या आवश्यकता होने पर लापता निर्देशिका बनाने का कोई सभ्य/पोर्टेबल तरीका उपयोग है? मैं pom.xml में mkdir कमांड को परिभाषित नहीं करना चाहता, क्योंकि मेरी परियोजना को सिस्टम स्वतंत्र होना चाहिए।

उत्तर

26
कार्यकारी प्लगइन के बजाय

, पहले निर्देशिका बनाने के लिए और फिर बचत संकलक आह्वान antrun प्लगइन का उपयोग।

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <configuration> 
     <tasks> 
      <mkdir dir="target/generated-sources/thrift"/> 
      <exec executable="${thrift.executable}"> 
      <arg value="--gen"/> 
      <arg value="java:beans"/> 
      <arg value="-o"/> 
      <arg value="target/generated-sources/thrift"/> 
      <arg value="src/main/resources/MyThriftMessages.thrift"/> 
      </exec> 
     </tasks> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

तुम भी maven-thrift-plugin पर एक नज़र डालें कर सकते हैं।

+0

अच्छा समाधान है, लेकिन किसी को antrun बिना एक जान लेता है ? समय-समय पर मुझे कई बार निर्माण करना पड़ता है, क्योंकि यह किसी भी तरह से काम नहीं करता है (शायद मैवेन 3.1.1?) – Adrian

+0

' जेनरेट-स्रोत 'की आवश्यकता नहीं है। अनुलेख मेवेन में मुझे पसंद करने वाली एकमात्र चीज निर्भरता प्रबंधन है। –

+0

@Adrian इस एंटर-कम समाधान देखें: https://stackoverflow.com/a/40674535/363573 – Stephan

15

आप नौकरी करने के लिए एक चींटी कार्य को परिभाषित कर सकते हैं। अपने प्रोजेक्ट के pom.xml में plugin घोषणा दें। यह अपनी परियोजना प्रणाली स्वतंत्र रखना होगा:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>createThriftDir</id> 
        <phase>process-resources</phase> 
        <configuration> 
         <tasks> 
          <delete dir="${thrift.dir}"/> 
          <mkdir dir="${thrift.dir}"/> 
         </tasks> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
4

आप अपने प्रोजेक्ट में कहीं इस तरह के फ़ोल्डर संरचना तैयार करने के लिए चाहते हैं और फिर आप चाहते हैं जगह कॉपी करते हैं, उपयोग Maven-संसाधन प्लगइन है कि ऐसा करने के लिए:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-folder</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}</outputDirectory> 
       <resources> 
        <resource> 
        <filtering>false</filtering> 
        <directory>${project.basedir}/src/main/resources/folders</directory> 
        </resource> 
       </resources> 
      </configuration> 
    </execution> 
    </executions> 
</plugin>