Maven project.build.directory


172

मावेन में, क्या project.build.directoryसंदर्भित करता है? मैं थोड़ा उलझन में हूँ, क्या यह स्रोत कोड निर्देशिका या मावेन परियोजना में लक्ष्य निर्देशिका का संदर्भ देता है?

जवाबों:


224

आप उन मावेन गुणों को सुपर पोम में पा सकते हैं।

आप यहाँ जार पाते हैं:

${M2_HOME}/lib/maven-model-builder-3.0.3.jar

जार को 7-ज़िप या किसी अन्य अभिलेखागार से खोलें (या जार टूल का उपयोग करें)।

पर जाए

org/apache/maven/model

वहां तुम पाओगे pom-4.0.0.xml

इसमें उन सभी "शॉर्ट कट्स" शामिल हैं:

<project>
    ...
    <build>
        <directory>${project.basedir}/target</directory>
        <outputDirectory>${project.build.directory}/classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
            </testResource>
        </testResources>
        ...
    </build>
    ...
</project>

अपडेट करें

कुछ पैरवी के बाद मैं एक लिंकpom-4.0.0.xml जोड़ रहा हूं । यह आपको स्थानीय जार फ़ाइल को खोलने के बिना गुणों को देखने की अनुमति देता है।


मैं फ़ाइल के बजाय एक ऑनलाइन संदर्भ सुझाऊंगा जो जार में संग्रहीत है। यह: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise वैसे तो यह अच्छा है लेकिन यह आपको project.build.directoryउदाहरण के लिए डिफ़ॉल्ट मान नहीं दिखाता है । यही मैं दिखाना चाहता था।
माबा

गिटहब दर्पण एक विशिष्ट पंक्ति संख्या को जोड़ने की अनुमति देता है: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… अन्यथा, यह svn.apache.org/repos/asf
मार्टिन एलिस

@MartinEllis ठीक है, मैंने एक लिंक के साथ अपना जवाब अपडेट किया है। धन्यवाद!
मबा

मैंने gavub.com/apache/maven पर मावेन रेपो के स्रोत को खोजा । हिट की अपेक्षाकृत कम संख्या (9)। कुछ भी उस संपत्ति को सीधे सेट नहीं करता है। यह कहीं सेट हो गया है! यह URL मेरे द्वारा देखे गए खोज परिणामों को दिखाता है: github.com/apache/maven/…
PatS

44

यह आपके शीर्ष स्तर के आउटपुट डायरेक्टरी की ओर इशारा करता है (जो डिफ़ॉल्ट रूप से है target):

https://web.archive.org/web/20150527103929/http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

संपादित करें: जैसा कि बताया गया है, कोडहॉस अब दुख की बात है। आप इन गुणों के बारे में विवरण सोनाटाइप से यहाँ पा सकते हैं:

http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-project-properties

यदि आप कभी भी मावेन में आउटपुट निर्देशिकाओं को संदर्भित करने का प्रयास कर रहे हैं, तो आपको कभी भी लक्ष्य / कक्षाओं जैसे शाब्दिक मूल्य का उपयोग नहीं करना चाहिए । इसके बजाय आपको इन निर्देशिकाओं को संदर्भित करने के लिए संपत्ति संदर्भ का उपयोग करना चाहिए।

    project.build.sourceDirectory
    project.build.scriptSourceDirectory
    project.build.testSourceDirectory
    project.build.outputDirectory
    project.build.testOutputDirectory
    project.build.directory

sourceDirectory, scriptSourceDirectoryऔर testSourceDirectoryपरियोजना के लिए स्रोत निर्देशिकाओं तक पहुँच प्रदान करते हैं। outputDirectoryऔर testOutputDirectoryनिर्देशिकाओं तक पहुंच प्रदान करें जहां मावेन बायटेकोड या अन्य बिल्ड आउटपुट डालने जा रहा है। directoryउस निर्देशिका को संदर्भित करता है जिसमें ये सभी आउटपुट निर्देशिकाएं होती हैं।


1
Codehause.org होस्टिंग को समाप्त कर दिया गया है और यह लिंक अधिक काम नहीं करता है।
बार्टोज़ फ़रिन

हां, सच और दुखद। मैंने एक कामकाजी लिंक के साथ अद्यतन किया है और लिंक किए गए पृष्ठ के संबंधित अनुभाग को उद्धृत किया है।
sdouglass

7
... तो project.base.dirपरियोजना की जड़ निर्देशिका को इंगित करता है जहां pom.xml है। यही कारण है कि उसके बाद, project.build.directoryमावेन द्वारा परिभाषित किया गया है ${project.basedir}/target। धन्यवाद दोस्तों, मुझे यह नहीं पता था।
evaldeslacasa

1
हालाँकि यह सत्य प्रतीत होता है, लेकिन आपको यह जानकारी कैसे मिली: "प्रोजेक्ट.base.dir उस प्रोजेक्ट की रूट डायरेक्टरी को इंगित करता है जहाँ pom.xml है"। मैं इस परिभाषा को कहां देख सकता हूं?
क़तार

2
मान लीजिए कि आपके प्रोजेक्ट को प्रोजेक्ट-ए कहा जाता है, और प्रोजेक्ट-ए के तहत, एक pom.xml घोषित किया जाता है, तब ${project.build.sourceDirectory}इंगित करता है project-A/src/main/java, ${project.build.scriptSourceDirectory}इंगित करता है project-A/src/main/scripts, ${project.build.testSourceDirectory}इंगित करता है project-A/src/test/java, ${project.build.directory}इंगित करता है project-A/target, ${project.build.directory}इंगित करता है project-A/target/classes, को ${project.build.testOutputDirectory}इंगित करता है project-A/target/test-classes
sc30

4

आप अपने प्रोजेक्ट में मूल्य के लिए सबसे नवीनतम उत्तर पा सकते हैं

mvn3 help:effective-pom

आदेश और <build> ... <directory>प्रभावी-पोम में परिणाम उर्फ ​​में टैग का मान ढूंढें । यह सुपर POM के मूल्य को दिखाएगा जब तक कि आपने ओवरराइट नहीं किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.