CodeGym /జావా కోర్సు /మాడ్యూల్ 3 /అధునాతన మావెన్ ప్రాజెక్ట్ బిల్డ్

అధునాతన మావెన్ ప్రాజెక్ట్ బిల్డ్

మాడ్యూల్ 3
స్థాయి , పాఠం
అందుబాటులో ఉంది

1.1 మావెన్‌లో నిర్మించాల్సిన ప్లగిన్‌ల జాబితా

మావెన్‌లోని అసెంబ్లీని చాలా సరళంగా కాన్ఫిగర్ చేయవచ్చు. మావెన్ డెవలపర్లు ప్రత్యేకంగా డజన్ల కొద్దీ ప్లగిన్‌లను సృష్టించారు, వీటిని ఉపయోగించి మీరు వివిధ బిల్డ్‌లను చాలా సరళంగా కాన్ఫిగర్ చేయవచ్చు. వాటిలో అత్యంత ప్రాచుర్యం పొందినవి క్రింది పట్టికలో చూపబడ్డాయి:

అనుసంధానించు వివరణ
1 మావెన్-కంపైలర్-ప్లగ్ఇన్ జావా సంకలనాన్ని నిర్వహిస్తుంది
2 maven-resources-plugin అసెంబ్లీలో వనరులను చేర్చడాన్ని నియంత్రిస్తుంది
3 మావెన్ సోర్స్ ప్లగ్ఇన్ అసెంబ్లీలో సోర్స్ కోడ్ చేర్చబడిందో లేదో నియంత్రిస్తుంది
4 మావెన్-డిపెండెన్సీ-ప్లగ్ఇన్ డిపెండెన్సీ లైబ్రరీలను కాపీ చేసే ప్రక్రియను నియంత్రిస్తుంది
5 మావెన్-జార్-ప్లగ్ఇన్ చివరి jar ఫైల్‌ని సృష్టించడానికి ప్లగిన్
6 మావెన్ వార్ ప్లగ్ఇన్ ఫైనల్ వార్ ఫైల్‌ను రూపొందించడానికి ప్లగిన్
7 maven-surefire-plugin టెస్ట్ పరుగులను నిర్వహిస్తుంది
8 buildnumber-maven-plugin బిల్డ్ నంబర్‌ను రూపొందిస్తుంది

ప్రతి ప్లగ్ఇన్ దాని స్వంత మార్గంలో ఆసక్తికరంగా ఉంటుంది, కానీ మేము వాటన్నింటినీ విశ్లేషించాలి. ప్రధాన విషయంతో ప్రారంభిద్దాం - సంకలన నిర్వహణ ప్లగ్ఇన్.

1.2 కంపైలేషన్ ప్లగ్ఇన్ మావెన్-కంపైలర్-ప్లగ్ఇన్

కంపైలర్ యొక్క సంస్కరణను నియంత్రించడానికి మిమ్మల్ని అనుమతించే అత్యంత ప్రజాదరణ పొందిన ప్లగ్ఇన్ మరియు దాదాపు అన్ని ప్రాజెక్ట్‌లలో ఉపయోగించబడుతుంది maven-compiler-plugin. ఇది డిఫాల్ట్ సెట్టింగ్‌లను కలిగి ఉంది, కానీ దాదాపు ప్రతి ప్రాజెక్ట్‌లో వాటిని మళ్లీ సెట్ చేయాలి.

సరళమైన సంస్కరణలో, ప్లగ్-ఇన్‌లో, మీరు జావా సోర్స్ కోడ్ యొక్క సంస్కరణను మరియు అసెంబ్లీని నిర్వహించే జావా యంత్రం యొక్క సంస్కరణను పేర్కొనాలి:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.11</source>
        <target>1.13</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

పై ఉదాహరణలో, మేము మూడు జావా కంపైలర్ ఎంపికలను సెట్ చేసాము: source, targetమరియు encoding.

పరామితి sourceమన మూలాల కోసం జావా సంస్కరణను సెట్ చేయడానికి అనుమతిస్తుంది. పరామితి targetఅనేది మీరు తరగతులను కంపైల్ చేయాలనుకుంటున్న జావా మెషీన్ యొక్క సంస్కరణ. కోడ్ లేదా జావా మెషీన్ వెర్షన్ పేర్కొనబడకపోతే, డిఫాల్ట్ 1.3

encodingచివరగా, జావా ఫైళ్ల ఎన్‌కోడింగ్‌ను పేర్కొనడానికి పరామితి మిమ్మల్ని అనుమతిస్తుంది. మేము సూచించాము UTF-8. ఇప్పుడు దాదాపు అన్ని మూలాధారాలు లో నిల్వ చేయబడ్డాయి UTF-8. కానీ ఈ పరామితి పేర్కొనబడకపోతే, ఆపరేటింగ్ సిస్టమ్ యొక్క ప్రస్తుత ఎన్కోడింగ్ ఎంపిక చేయబడుతుంది. Windows కోసం, ఇది ఎన్‌కోడింగ్ Windows-1251.

బిల్డ్ కంప్యూటర్‌లో జావా యొక్క అనేక వెర్షన్‌లు ఇన్‌స్టాల్ చేయబడిన సందర్భాలు కూడా ఉన్నాయి: విభిన్న మాడ్యూల్స్ మరియు/లేదా విభిన్న ప్రాజెక్ట్‌లను రూపొందించడానికి. ఈ సందర్భంలో, JAVA_HOMEవాటిలో ఒకదానికి మాత్రమే మార్గం వేరియబుల్‌లో పేర్కొనబడుతుంది.

అదనంగా, జావా యంత్రం యొక్క వివిధ అమలులు ఉన్నాయి: OpenJDK, OracleJDK, Amazon JDK. మరియు ప్రాజెక్ట్ పెద్దది, దాని నిర్మాణం మరింత క్లిష్టంగా ఉంటుంది. కానీ మీరు ట్యాగ్‌ని ఉపయోగించి ప్లగ్ఇన్ కోసం జావాక్ కంపైలర్‌కు మార్గాన్ని స్పష్టంగా సెట్ చేయవచ్చు . ఈ సందర్భంగా ప్రత్యేకంగా జోడించబడింది.

ప్లగ్ఇన్ maven-compiler-pluginరెండు లక్ష్యాలను కలిగి ఉంది:

  • compiler:compile– మూలాల సంకలనం, కంపైల్ దశతో అనుబంధించబడిన డిఫాల్ట్‌గా
  • compiler:testCompile- పరీక్షల సంకలనం, డిఫాల్ట్‌గా ఇది పరీక్ష-కంపైల్ దశతో అనుబంధించబడుతుంది.

మీరు కమాండ్ లైన్‌లో javac కంపైలర్‌కు పంపవలసిన ఆర్గ్యుమెంట్‌ల జాబితాను కూడా పేర్కొనవచ్చు:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:all,-options,-path<arg>
        </compilerArgs>
    </configuration>
</plugin>

1.3 జార్ ఫైల్ maven-jar-plugin సృష్టించడానికి ప్లగిన్

మీరు మావెన్‌తో మీ స్వంత జార్ లైబ్రరీని నిర్మించాలనుకుంటే, మీకు మావెన్-జార్-ప్లగ్ఇన్ అవసరం. ఈ ప్లగ్ఇన్ చాలా ఉపయోగకరమైన పనులను చేస్తుంది.

అటువంటి ప్లగ్ఇన్ యొక్క ఉదాహరణ:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <includes>
            <include>**/properties/*</include>
        </includes>
        <archive>
           <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
        </archive>
    </configuration>
</plugin>

మొదట, లైబ్రరీలోకి ఏ ఫైల్‌లు వెళ్తాయో మరియు ఏది వెళ్లకూడదో పేర్కొనడానికి దీనిని ఉపయోగించవచ్చు. <include>విభాగంలోని ట్యాగ్‌లను ఉపయోగించి , మీరు లైబ్రరీకి జోడించాల్సిన కంటెంట్‌ని డైరెక్టరీల జాబితాను<includes> పేర్కొనవచ్చు .

రెండవది, ప్రతి కూజా తప్పనిసరిగా మానిఫెస్ట్ ( MANIFEST.MF ఫైల్ ) కలిగి ఉండాలి. ప్లగ్ఇన్ దానిని లైబ్రరీలో సరైన స్థలంలో ఉంచుతుంది, మీరు దానిని ఏ మార్గాన్ని తీసుకోవాలో పేర్కొనాలి. దీనికి ట్యాగ్ ఉపయోగించబడుతుంది <manifestFile>.

చివరగా, ప్లగ్ఇన్ దాని స్వంత మానిఫెస్ట్‌ను రూపొందించగలదు. దీన్ని చేయడానికి, ట్యాగ్‌కు బదులుగా, <manifestFile>మీరు ట్యాగ్‌ని జోడించాలి <manifest>మరియు దానిలో భవిష్యత్తు మానిఫెస్ట్ కోసం డేటాను పేర్కొనాలి. ఉదాహరణ:

<configuration>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.codegym.MainApplication</mainClass>
        </manifest>
    </archive>
</configuration>

ట్యాగ్ <addClasspath>మానిఫెస్ట్‌కు జోడించాలా వద్దా అని నిర్దేశిస్తుంది CLASSPATH.

ట్యాగ్ <classpathPrefix>ప్రతి వనరుకు ముందు ఉపసర్గ (ఉదాహరణ లిబ్‌లో) జోడించడానికి మిమ్మల్ని అనుమతిస్తుంది. లో ఉపసర్గను పేర్కొనడం వలన <classpathPrefix>మీరు డిపెండెన్సీలను ప్రత్యేక ఫోల్డర్‌లో ఉంచవచ్చు.

అవును, మీరు మరొక లైబ్రరీలో లైబ్రరీలను ఉంచవచ్చు. మరియు జార్ లైబ్రరీలో ఉన్న జార్ లైబ్రరీలో ఉన్న ప్రాపర్టీస్ ఫైల్‌కు ఎక్కడో మార్గం పాస్ చేయవలసి వచ్చినప్పుడు మీ కోసం చాలా ఆశ్చర్యకరమైనవి వేచి ఉన్నాయి.

చివరగా, ట్యాగ్ <mainClass>మెయిన్ ఎక్జిక్యూటబుల్ క్లాస్‌ని సూచిస్తుంది. “ మెయిన్ ఎక్జిక్యూటబుల్ క్లాస్ అంటే ఏమిటి? ", - మీరు అడగండి. మరియు విషయం ఏమిటంటే, జావా మెషీన్ జావా క్లాస్ ద్వారా మాత్రమే కాకుండా, జార్ ఫైల్ ద్వారా కూడా పేర్కొన్న ప్రోగ్రామ్‌ను అమలు చేయగలదు. మరియు ఈ సందర్భంలోనే ప్రధాన ప్రారంభ తరగతి అవసరం.

1.4 బిల్డ్ నంబర్ జనరేషన్ ప్లగ్ఇన్ buildnumber-maven-plugin

చాలా తరచుగా, జార్ లైబ్రరీలు మరియు వార్ ఫైల్‌లు ప్రాజెక్ట్ పేరు మరియు దాని సంస్కరణతో పాటు అసెంబ్లీ సంస్కరణతో సమాచారాన్ని కలిగి ఉంటాయి. డిపెండెన్సీలను నిర్వహించడానికి ఇది ఉపయోగకరంగా ఉండటమే కాకుండా, ఇది పరీక్షను కూడా సులభతరం చేస్తుంది: లైబ్రరీ యొక్క ఏ సంస్కరణలో లోపం పరిష్కరించబడింది మరియు అది జోడించబడినది స్పష్టంగా ఉంటుంది.

చాలా తరచుగా, ఈ పని ఇలా పరిష్కరించబడుతుంది - వారు application.propertiesఅవసరమైన అన్ని సమాచారాన్ని కలిగి ఉన్న ప్రత్యేక ఫైల్ను సృష్టించి, అసెంబ్లీలో చేర్చారు. మీరు బిల్డ్ స్క్రిప్ట్‌ను కూడా కాన్ఫిగర్ చేయవచ్చు, తద్వారా ఈ ఫైల్ నుండి డేటా MANIFEST.MFమొదలైన వాటికి తరలించబడుతుంది.

కానీ చాలా ఆసక్తికరమైన విషయం ఏమిటంటే, మావెన్ అటువంటి అప్లికేషన్.ప్రాపర్టీస్ ఫైల్‌ను రూపొందించగల ప్రత్యేక ప్లగ్ఇన్‌ను కలిగి ఉంది. దీన్ని చేయడానికి, మీరు అటువంటి ఫైల్‌ను సృష్టించి, ప్రత్యేక డేటా టెంప్లేట్‌లతో నింపాలి. ఉదాహరణ:

# application.properties
app.name=${pom.name}
app.version=${pom.version}
app.build=${buildNumber}

మొత్తం మూడు పారామితుల విలువలు నిర్మాణ దశలో భర్తీ చేయబడతాయి.

పారామితులు pom.nameమరియు pom.versionనుండి నేరుగా తీసుకోబడతాయి pom.xml. మరియు మావెన్‌లో ప్రత్యేకమైన బిల్డ్ నంబర్‌ను రూపొందించడానికి, ప్రత్యేక ప్లగ్ఇన్ ఉంది - buildnumber-maven-plugin. దిగువ ఉదాహరణ చూడండి:

<packaging>war</packaging>
<version>1.0</version>
<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <phase>validate</phase>
                <goals>
                    <goal>create</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <revisionOnScmFailure>true</revisionOnScmFailure>
            <format>{0}-{1,date,yyyyMMdd}</format>
            <items>
                 <item>${project.version}</item>
                 <item>timestamp</item>
            </items>
        </configuration>
    </plugin>
</plugins>

పై ఉదాహరణలో, మూడు ముఖ్యమైన విషయాలు జరుగుతాయి. మొదట, అసెంబ్లీ సంస్కరణను సెట్ చేయడానికి ప్లగ్ఇన్ స్వయంగా పేర్కొనబడింది . రెండవది, ఇది ప్రామాణీకరణ దశలో (మొదటి దశ) అమలు చేయబడుతుందని మరియు బిల్డ్ నంబర్‌ను ఉత్పత్తి చేస్తుందని పేర్కొనబడింది - ${buildNumber}.

మరియు మూడవదిగా, ఈ అసెంబ్లీ సంఖ్య యొక్క ఆకృతి సూచించబడుతుంది, ఇది అనేక భాగాల నుండి అతుక్కొని ఉంటుంది . ఇది ప్రాజెక్ట్ యొక్క సంస్కరణ project.versionమరియు టెంప్లేట్ ద్వారా అందించబడిన ప్రస్తుత సమయం. టెంప్లేట్ ఫార్మాట్ జావా క్లాస్ ద్వారా పేర్కొనబడింది MessageFormat.

వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION