1.1 மேவெனில் உருவாக்க வேண்டிய செருகுநிரல்களின் பட்டியல்

Maven இல் உள்ள சட்டசபை மிகவும் நெகிழ்வான முறையில் கட்டமைக்கப்படலாம். மேவன் டெவலப்பர்கள் சிறப்பாக டஜன் கணக்கான செருகுநிரல்களை உருவாக்கியுள்ளனர், இதைப் பயன்படுத்தி நீங்கள் பல்வேறு கட்டமைப்புகளை மிகவும் நெகிழ்வாக உள்ளமைக்கலாம். அவற்றில் மிகவும் பிரபலமானவை கீழே உள்ள அட்டவணையில் காட்டப்பட்டுள்ளன:

சொருகு விளக்கம்
1 maven-compiler-plugin ஜாவா தொகுப்பை நிர்வகிக்கிறது
2 maven-resources-plugin ஒரு சட்டசபையில் வளங்களைச் சேர்ப்பதைக் கட்டுப்படுத்துகிறது
3 maven மூல சொருகி ஒரு சட்டசபையில் மூல குறியீடு சேர்க்கப்பட்டுள்ளதா என்பதைக் கட்டுப்படுத்துகிறது
4 மேவன்-சார்பு-சொருகி சார்பு நூலகங்களை நகலெடுக்கும் செயல்முறையைக் கட்டுப்படுத்துகிறது
5 maven-jar-plugin இறுதி ஜார் கோப்பை உருவாக்குவதற்கான செருகுநிரல்
6 மேவன் போர் சொருகி இறுதி போர் கோப்பை உருவாக்குவதற்கான செருகுநிரல்
7 maven-surefire-plugin சோதனை ஓட்டங்களை நிர்வகிக்கிறது
8 buildnumber-maven-plugin உருவாக்க எண்ணை உருவாக்குகிறது

ஒவ்வொரு செருகுநிரலும் அதன் சொந்த வழியில் சுவாரஸ்யமானது, ஆனால் அவை அனைத்தையும் நாம் பகுப்பாய்வு செய்ய வேண்டும். முக்கிய விஷயத்துடன் தொடங்குவோம் - தொகுப்பு மேலாண்மை சொருகி.

1.2 தொகுத்தல் சொருகி maven-compiler-plugin

கம்பைலரின் பதிப்பைக் கட்டுப்படுத்த உங்களை அனுமதிக்கும் மிகவும் பிரபலமான செருகுநிரல் மற்றும் கிட்டத்தட்ட எல்லா திட்டங்களிலும் பயன்படுத்தப்படுகிறது 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-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

Maven உடன் உங்கள் சொந்த ஜாடி நூலகத்தை உருவாக்க விரும்பினால், உங்களுக்கு 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.

ஆனால் மிகவும் சுவாரஸ்யமான விஷயம் என்னவென்றால், Maven ஒரு சிறப்பு செருகுநிரலைக் கொண்டுள்ளது, இது அத்தகைய app.properties கோப்பை உருவாக்க முடியும். இதைச் செய்ய, நீங்கள் அத்தகைய கோப்பை உருவாக்கி அதை சிறப்பு தரவு வார்ப்புருக்களுடன் நிரப்ப வேண்டும். உதாரணமாக:

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

மூன்று அளவுருக்களின் மதிப்புகள் உருவாக்க கட்டத்தில் மாற்றப்படும்.

அளவுருக்கள் pom.nameமற்றும் pom.versionஇலிருந்து நேரடியாக எடுக்கப்படும் pom.xml. மற்றும் Maven இல் ஒரு தனித்துவமான உருவாக்க எண்ணை உருவாக்க, ஒரு சிறப்பு செருகுநிரல் உள்ளது - 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.