자바를 이제 막 공부하기 시작한 사람입니다. C#만쓰다가 자바를 공부하려니 익숙하지가 않아서 당혹스럽네요. 오픈소스를 받아서 이클립스로 열어보려니 거기서부터 막혀서 여차여차하다 메이븐을 알게되었고, 메이븐 책(자바 세상의 빌드를...)의 저자이신 자바지기님의 github에 들렀다가 이곳을 알게 되었습니다.
여기(http://stand.spree.de/wiki_details_maven_archetypes)를를) 따라하면 안드로이드 템플릿 프로젝트(my-android-application)를 생성할 수 있는데요.
문제는 생성된 pom.xml에서 아래와 같은 빌드 플러그인이 선언이 되어있는데
<build>
<finalName>${project.artifactId}</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>${android.plugin.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
mvn help:effective-pom 실행 후 이 부분을 살펴보면, 아래와 같이
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.6.0</version>
<extensions>true</extensions>
<executions>
<execution>
<id>default-internal-integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>internal-integration-test</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>generate-sources</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-internal-pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>internal-pre-integration-test</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-emma</id>
<phase>prepare-package</phase>
<goals>
<goal>emma</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-dex</id>
<phase>prepare-package</phase>
<goals>
<goal>dex</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-proguard</id>
<phase>process-classes</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
<execution>
<id>default-apk</id>
<phase>package</phase>
<goals>
<goal>apk</goal>
</goals>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</execution>
</executions>
<configuration>
<sdk>
<platform>16</platform>
</sdk>
</configuration>
</plugin>
3개의 의견 from SLiPP
http://maven.apache.org/pom.html#Extensions 문서를 보면 다음과 같은 내용이 있네요.
as well as make plugins active which make changes to the build lifecycle.
저도 extension을 사용해 보지 않았는데요. extension을 사용할 경우 메이븐이 기본으로 가지는 빌드 라이프사이클을 확장할 수 있는 기능이네요. 따라서 이와 같이 설정할 경우 android-maven-plugin의 설정이 기본 라이프사이클에 추가되는 구조로 이해하시면 될 듯 합니다.
답변 감사드립니다. 현재로선 그 정도로 이해하고 넘어가는게 저에게는 맞을 듯 합니다. 자바 걸음마 단계라... 차후에 메이븐 이외의 다른 것들에 대해 익숙해진 후에 좀 더 깊이 알아봐야할 것 같습니다.
책의 저자님과 이렇게 질답을 할 수 있다니 영광입니다. 책을 본 후, 몇가지 의문점이 있는데 기회가 되면 질문을 드리겠습니다.
메이븐 document의 Lifecycle관한 내용에서 질문관련한 내용이 언급되어 있네요. 혹시나 해서 링크 남깁니다.
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Packaging (인용) "Note that for some packaging types to be available, you may also need to include a particular plugin in the section of your POM and specify true for that plugin. One example of a plugin that requires this is the Plexus plugin, which provides a plexus-application and plexus-service packaging."
android-maven-plugin의 apk 패키징 타입이 여기에 속하겠네요.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.