CodeGym/Kurso sa Java/Modyul 3/Pamamahala ng mga file habang gumagawa ng isang proyekto ...

Pamamahala ng mga file habang gumagawa ng isang proyekto ng Maven

Available

2.1 maven-resources-plugin copy resources plugin

Kung ikaw ay gumagawa ng isang web application, magkakaroon ka lamang ng isang grupo ng iba't ibang mga mapagkukunan sa loob nito. Ito ay mga library ng jar, jsp servlet, mga file ng setting. At siyempre, ito ay isang grupo ng mga static na file tulad ng html, css, js, pati na rin ang iba't ibang mga larawan.

Bilang default, kapag gumagawa ng proyekto, kokopyahin lang ni Maven ang lahat ng iyong mga file mula sa folder src/main/resourcespatungo sa target na direktoryo. Kung gusto mong gumawa ng mga pagbabago sa gawi na ito, tutulungan ka ng plugin maven-resources-plugin.

Sample code para sa naturang plugin:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   ${basedir}/target/resources
                </outputDirectory>
                <resources>
                    <resource>  instructions for copying a resource 1 </resource>
                    <resource>  instructions for copying a resource 2 </resource>
                    <resource>  instructions for copying a resource N </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Tatawagin ang plugin na ito sa yugto ng pagpapatunay. Gamit ang tag, <outputDirectory>maaari mong itakda ang direktoryo kung saan dapat kopyahin ng plugin ang mga mapagkukunang tinukoy sa <resources>. At ito ay kung saan ang plugin ay maaaring magbuka sa lahat ng lakas nito.

2.2 Pag-filter ng mga mapagkukunan gamit ang maven-resources-plugin

Ang mga mapagkukunan ng plugin ay maaaring tukuyin hindi lamang sa anyo ng mga file, ngunit kaagad sa anyo ng mga direktoryo. Bukod dito, maaaring magdagdag ng mask sa direktoryo, na tumutukoy kung aling mga file mula dito ang isasama sa mapagkukunang ito.

Halimbawa:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

Dalawang asterisk bilang mask ay kumakatawan sa anumang bilang ng mga direktoryo . Sa halimbawa sa itaas, lahat ng png file na nasa direktoryo src/main/resources/images(at mga subdirectory nito) ay kukunin bilang resource data.

Kung gusto mong ibukod ang ilang mga file, maaari mong gamitin ang exclude. Halimbawa:

<resource>
    <directory>src/main/resources/images</directory>
    <includes>
        <include>**/*.png</include>
    </includes>
    <excludes>
         <exclude>old/*.png</exclude>
    </excludes>
</resource>

Ang mga tag ay inilapat nang sunud-sunod: una, ang mga kasamang file na tinukoy sa mga file na kasama ay idaragdag sa mapagkukunan, at pagkatapos ay ang mga ibukod na mga file ay hindi isasama sa listahang ito.

Ngunit hindi lang iyon. Ang plugin ay maaaring tumingin sa loob ng mga file (kung ang mga ito ay teksto, siyempre). At, halimbawa, idagdag application.propertiesang kinakailangang bersyon ng pagpupulong sa file. Upang maproseso ng plugin ang mga nilalaman ng file, kailangan mong tukuyin ang parameter <filtering>true</filtering>.

Halimbawa:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*. properties </include>
    </includes>
</resource>

Higit pang mga detalye tungkol sa plugin na ito ay matatagpuan sa link: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plugin source inclusion plugin

Isa pang kapaki-pakinabang na plugin - maven-source-pluginnagbibigay-daan sa iyong isama ang source code ng iyong mga java file sa assembly. Para saan?

Ang bagay ay na bilang karagdagan sa mga web application, ang isang napakalaking bilang ng mga aklatan ay binuo gamit ang Maven. Maraming mga proyekto sa Java ang sumusunod sa konsepto ng open-source at ipinamamahagi sa komunidad ng Java na may sariling mga mapagkukunan.

Bakit kailangan mo ng hiwalay na plugin? Bakit hindi mo na lang kopyahin ang pinagmulan at iyon na?

Una, sa anumang kumplikadong proyekto, ang mga mapagkukunan ay maaaring maimbak sa maraming lugar.

Pangalawa, ang henerasyon ng mga mapagkukunan batay sa mga detalye ng xml ay madalas na ginagamit, ang mga naturang mapagkukunan ay kailangan ding isama sa pagpupulong.

At pangatlo, maaari kang magpasya na huwag isama ang anumang partikular na mga lihim na file sa iyong pagpupulong.

Isang halimbawa ng paggamit ng maven-source-plugin plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 maven-dependency-plugin dependency copy plugin

Maaaring kailanganin mo ring matalinong kopyahin ang mga dependency (mga aklatan) kapag gumagawa ng proyekto. Ang isang plugin ay ginagamit para dito maven-dependency-plugin.

Halimbawa:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory>
            ${project.build.directory}/lib/
        </outputDirectory>
    </configuration>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Sa halimbawang ito, nakasulat ang default na gawi ng plugin - pagkopya ng mga library sa ${project.build.directory}/lib.

Ang execution section ay nagsasaad na ang plugin ay tatawagin sa panahon ng build phase - package, goal - copy-dependences.

Sa pangkalahatan, ang plugin na ito ay may medyo malaking hanay ng mga layunin, narito ang mga pinakasikat:

1 dependency:pag-aralan pagsusuri ng dependency (ginamit, hindi nagamit, tinukoy, hindi tinukoy)
2 dependency:analyze-duplicate pagtukoy ng mga duplicate na dependencies
3 dependency:resolve resolution (kahulugan) ng lahat ng dependencies
4 dependency:resolve-plugin pahintulot (kahulugan) ng lahat ng mga plugin
5 dependency:puno pagpapakita ng dependency tree

Maaari ka ring magtakda ng mga karagdagang parameter sa seksyon ng pagsasaayos:

1 outputDirectory Direktoryo kung saan kokopyahin ang mga dependency
2 overWriteReleases I-flag para i-overwrite ang mga dependency kapag gumagawa ng release
3 overWriteSnapshots I-flag para i-overwrite ang mga non-terminal na dependency na mayroong SNAPSHOT
4 overWriteIfNewer I-flag para i-overwrite ang mga library gamit ang mga mas bagong bersyon

Halimbawa:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

Bilang default <overWriteReleases>, at <overWriteSnapshots>ito ay mali, dahil <overWriteIfNewer>ito ay totoo.

Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito