Maven i budowanie projektu

0

Mam parę pytań odnośnie Mavena, które pojawiają mi się wraz z pracą nad projektem. I coś mi się rozjaśnia.

Czy to, że utworzę w IDE projekt mavenowy to wiąże się tylko i wyłącznie z tym, że dostanę szkielet mavenowego projektu, który ma podpięte zależności itd.

Dopiero jak taką aplikację będę chciał np. skompilować/zbudować (poprawcie mnie jeśli mylę pojęcia) to mavan na podstawie tego szkieletu, będzie wiedział gdzie są jakie pliki i będzie mógł wystawić taki plik np. war?

Od jakiegoś czasu próbuję zapoznać się czym jest Liferay Portal. Można do niego pisać portlety. Taki portlet liferayowy ma swoją konkretną strukturę pliku:

/PORTLET-NAME/
    build.xml
    /docroot/
        /css/
        /js/
        /WEB-INF/
            /src/ (not created by default)
            liferay-display.xml
            liferay-plugin-package.properties
            liferay-portlet.xml
            portlet.xml
            web.xml
        icon.png
        view.jsp
 

Żródło: http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/anatomy-of-a-portlet

I teraz pytanie. Żebym mógł zbudować z tego .war za pomocą Mavena to co muszę zrobić? Czy struktura może zostać taka jak powyżej, tylko trzeba odpowiednio skonstruować pom.xml?

0

zeby budowac wara musisz dodac odpowiedni plugin
nastepnie wydac mvn install i gitarka

0

w mvn dodajesz sobie resource jakie chcesz

... a jak bym mial tworzyc taki projekt, to skorzystalbym z dostepnego archetypu liferay-portlet... i wszystko zadzialoby sie samoistnie :P

0

@evan Przebrnąłem przez dokumentacje Liferaya i właśnie zacząłem robić tak jak napisałeś. Za pomocą archetypu liferay-portlet. Dzięki temu stworzyła się taka hierarchia plików:

 
/PORTLET-PLUGIN/
     pom.xml
    /src/
    /main/
        /java/
        /resources/
        /webapp/
            /css/
            /js/
            /WEB-INF/
                /src/ (not created by default)
                liferay-display.xml
                liferay-plugin-package.properties
                liferay-portlet.xml
                portlet.xml
                web.xml
            icon.png
            view.jsp

pom.xml wygląda tak:

<?xml version="1.0"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.liferay.sample</groupId>
	<artifactId>sample-portlet</artifactId>
	<packaging>war</packaging>
	<name>sample-portlet Portlet</name>
	<version>1.0-SNAPSHOT</version>

    <properties>
        <liferay.auto.deploy.dir>C:\liferay\deploy</liferay.auto.deploy.dir>
        <liferay.tomcat.dir>C:\liferay\tomcat-7.0.42</liferay.tomcat.dir>
        <liferay.version>6.2.1</liferay.version>

        <liferay.app.server.deploy.dir>${liferay.tomcat.dir}\webapps</liferay.app.server.deploy.dir>

        <liferay.app.server.lib.global.dir>${liferay.tomcat.dir}\lib\ext</liferay.app.server.lib.global.dir>

        <liferay.app.server.portal.dir>${liferay.tomcat.dir\webapps\root</liferay.app.server.portal.dir>

        <liferay.maven.plugin.version>6.2.10.4</liferay.maven.plugin.version>

    </properties>
	<build>
		<plugins>
			<plugin>
				<groupId>com.liferay.maven.plugins</groupId>
				<artifactId>liferay-maven-plugin</artifactId>
				<version>${liferay.maven.plugin.version}</version>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<goals>
							<goal>build-css</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
					<appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
					<appServerLibGlobalDir>${liferay.app.server.lib.global.dir}</appServerLibGlobalDir>
					<appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
					<liferayVersion>${liferay.version}</liferayVersion>
					<pluginType>portlet</pluginType>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.5</version>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>com.liferay.portal</groupId>
			<artifactId>portal-service</artifactId>
			<version>${liferay.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.liferay.portal</groupId>
			<artifactId>util-bridges</artifactId>
			<version>${liferay.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.liferay.portal</groupId>
			<artifactId>util-taglib</artifactId>
			<version>${liferay.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.liferay.portal</groupId>
			<artifactId>util-java</artifactId>
			<version>${liferay.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.portlet</groupId>
			<artifactId>portlet-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.4</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

I wyszło wszystko ok. Potem wrzuciłem to liferaya i działa.

Pytanie tylko do tego pom.xml ,a dokładniej czym są te pluginy i skąd on je bierze? I co robi ten plugin?

<plugin>
                <groupId>com.liferay.maven.plugins</groupId>
                <artifactId>liferay-maven-plugin</artifactId>
                <version>${liferay.maven.plugin.version}</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>build-css</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
                    <appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
                    <appServerLibGlobalDir>${liferay.app.server.lib.global.dir}</appServerLibGlobalDir>
                    <appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
                    <liferayVersion>${liferay.version}</liferayVersion>
                    <pluginType>portlet</pluginType>
                </configuration>
            </plugin>

W szczególności ten goal?

1 użytkowników online, w tym zalogowanych: 0, gości: 1