Henrik Bernström 13 Years Ago Kudos, Mika! Kudos, Liferay! Please sign in to reply. Reply as... Cancel
Jeffrey Handa 13 Years Ago Thanks Mika! Great explanation. Please sign in to reply. Reply as... Cancel
Tomas Polesovsky 13 Years Ago Thank you Mika,yes, yes, yes!!! I was waiting for news at http://www.liferay.com/web/guest/community/forums/-/message_boards/message/2527014, but this information is perfect!Dreams finally come true! Please sign in to reply. Reply as... Cancel
Lukas Matejka 13 Years Ago Great work! thanks, we can finally mavenize all our Liferay stuff Please sign in to reply. Reply as... Cancel
Jonas Yuan 13 Years Ago Great! Liferay goes Maven ... Thank you, Mika. Please sign in to reply. Reply as... Cancel
Sampsa Sohlman 13 Years Ago Kiitos Mika, this is what the community has been waiting for. I did modify http://wiki.github.com/azzazzel/liferay-maven-sdk plugin to work with EE.Future support for new Extlet would be good also .. then Liferay customization will be totally mavenized. Please sign in to reply. Reply as... Cancel
Thiago Leão Moreira 13 Years Ago Great post! So good explained!Thanks Mika! Please sign in to reply. Reply as... Cancel
Behrang Saeedzadeh 13 Years Ago The public SVN repo seems to be down. It cannot be access it via http://svn.liferay.com/repos/public Please sign in to reply. Reply as... Cancel Mika Koivisto Behrang Saeedzadeh 13 Years Ago It is up now. Was down for maintenance work. Please sign in to reply. Reply as... Cancel Behrang Saeedzadeh Mika Koivisto 13 Years Ago Thank you Mika! Please sign in to reply. Reply as... Cancel Brian Ko Mika Koivisto 12 Years Ago Hi Mika,In step 4, I need to install the Liferay maven plugins and archetypes go into support-maven folder and run "mvn install".But where is the folder? Is it created by one of those 3 ant command before step 4? Thank you.Brian Please sign in to reply. Reply as... Cancel Louis Sacco Brian Ko 12 Years Ago There's no doubt this certainly is going in the right directio, but suppose you create any type of plugin and you check your code into SVN which will trigger a CI build on your build servers. These build servers will not have any knowledge of Liferay dependencies nor will they allow us to install Liferay on the servers to satisfy those dependencies (if you were to use ANT). This is where Maven comes into the picture nicely. The idea would be that I could create a POM file for my plugin and define a set of dependencies that Liferay maintains in their Maven repository. Some attention would be needed to define which dependencies would be for EE customers too. From there, our build server would build based on the POM and pull down the Maven dependencies to satisfy the requirements for a successful build. Finally, we could then deploy the resulting build artifact (Liferay plugin WAR) to our internal Maven repository for our INFRA team to deploy to the various environments we have. As per Maven’s design we could deploy as a SNAPSHOT build for our DEV/TEST environment and then a Release build with a release number for PROD deployments. As an example, a POM may define a Liferay dependency as follows like you show above: <dependencies> <dependency> <groupId>com.liferay</groupId> <artifactId>portal-service</artifactId> <version>6.0.5</version> </dependency> ... </dependencies>We would then define a repository for the Liferay dependencies where we could retrieve this dependency: <repository> <id>Liferay</id> <name>Liferay Repsitory</name> <url>http://repository.liferay.com/maven2</url> </repository>Finally, in your repository, you could establish the transitive dependencies you require (i.e., the ones needed to compile your jar) in your .pom file that will be hosted in the repository so that when someone pulls the Liferay jar it will also pull those dependencies as well. As an example, see the Spring pom from Maven repo that illustrates how they require commons-logging, commons-collections and others. This way you will always have full control of which dependencies you want the customer to use with your JAR so they don’t go and muck things up by using an obsolete version.I really look forward to seeing Liferay provide Maven dependencies for EE customers as well in a future release. Please sign in to reply. Reply as... Cancel
Mika Koivisto Behrang Saeedzadeh 13 Years Ago It is up now. Was down for maintenance work. Please sign in to reply. Reply as... Cancel Behrang Saeedzadeh Mika Koivisto 13 Years Ago Thank you Mika! Please sign in to reply. Reply as... Cancel Brian Ko Mika Koivisto 12 Years Ago Hi Mika,In step 4, I need to install the Liferay maven plugins and archetypes go into support-maven folder and run "mvn install".But where is the folder? Is it created by one of those 3 ant command before step 4? Thank you.Brian Please sign in to reply. Reply as... Cancel Louis Sacco Brian Ko 12 Years Ago There's no doubt this certainly is going in the right directio, but suppose you create any type of plugin and you check your code into SVN which will trigger a CI build on your build servers. These build servers will not have any knowledge of Liferay dependencies nor will they allow us to install Liferay on the servers to satisfy those dependencies (if you were to use ANT). This is where Maven comes into the picture nicely. The idea would be that I could create a POM file for my plugin and define a set of dependencies that Liferay maintains in their Maven repository. Some attention would be needed to define which dependencies would be for EE customers too. From there, our build server would build based on the POM and pull down the Maven dependencies to satisfy the requirements for a successful build. Finally, we could then deploy the resulting build artifact (Liferay plugin WAR) to our internal Maven repository for our INFRA team to deploy to the various environments we have. As per Maven’s design we could deploy as a SNAPSHOT build for our DEV/TEST environment and then a Release build with a release number for PROD deployments. As an example, a POM may define a Liferay dependency as follows like you show above: <dependencies> <dependency> <groupId>com.liferay</groupId> <artifactId>portal-service</artifactId> <version>6.0.5</version> </dependency> ... </dependencies>We would then define a repository for the Liferay dependencies where we could retrieve this dependency: <repository> <id>Liferay</id> <name>Liferay Repsitory</name> <url>http://repository.liferay.com/maven2</url> </repository>Finally, in your repository, you could establish the transitive dependencies you require (i.e., the ones needed to compile your jar) in your .pom file that will be hosted in the repository so that when someone pulls the Liferay jar it will also pull those dependencies as well. As an example, see the Spring pom from Maven repo that illustrates how they require commons-logging, commons-collections and others. This way you will always have full control of which dependencies you want the customer to use with your JAR so they don’t go and muck things up by using an obsolete version.I really look forward to seeing Liferay provide Maven dependencies for EE customers as well in a future release. Please sign in to reply. Reply as... Cancel
Behrang Saeedzadeh Mika Koivisto 13 Years Ago Thank you Mika! Please sign in to reply. Reply as... Cancel
Brian Ko Mika Koivisto 12 Years Ago Hi Mika,In step 4, I need to install the Liferay maven plugins and archetypes go into support-maven folder and run "mvn install".But where is the folder? Is it created by one of those 3 ant command before step 4? Thank you.Brian Please sign in to reply. Reply as... Cancel Louis Sacco Brian Ko 12 Years Ago There's no doubt this certainly is going in the right directio, but suppose you create any type of plugin and you check your code into SVN which will trigger a CI build on your build servers. These build servers will not have any knowledge of Liferay dependencies nor will they allow us to install Liferay on the servers to satisfy those dependencies (if you were to use ANT). This is where Maven comes into the picture nicely. The idea would be that I could create a POM file for my plugin and define a set of dependencies that Liferay maintains in their Maven repository. Some attention would be needed to define which dependencies would be for EE customers too. From there, our build server would build based on the POM and pull down the Maven dependencies to satisfy the requirements for a successful build. Finally, we could then deploy the resulting build artifact (Liferay plugin WAR) to our internal Maven repository for our INFRA team to deploy to the various environments we have. As per Maven’s design we could deploy as a SNAPSHOT build for our DEV/TEST environment and then a Release build with a release number for PROD deployments. As an example, a POM may define a Liferay dependency as follows like you show above: <dependencies> <dependency> <groupId>com.liferay</groupId> <artifactId>portal-service</artifactId> <version>6.0.5</version> </dependency> ... </dependencies>We would then define a repository for the Liferay dependencies where we could retrieve this dependency: <repository> <id>Liferay</id> <name>Liferay Repsitory</name> <url>http://repository.liferay.com/maven2</url> </repository>Finally, in your repository, you could establish the transitive dependencies you require (i.e., the ones needed to compile your jar) in your .pom file that will be hosted in the repository so that when someone pulls the Liferay jar it will also pull those dependencies as well. As an example, see the Spring pom from Maven repo that illustrates how they require commons-logging, commons-collections and others. This way you will always have full control of which dependencies you want the customer to use with your JAR so they don’t go and muck things up by using an obsolete version.I really look forward to seeing Liferay provide Maven dependencies for EE customers as well in a future release. Please sign in to reply. Reply as... Cancel
Louis Sacco Brian Ko 12 Years Ago There's no doubt this certainly is going in the right directio, but suppose you create any type of plugin and you check your code into SVN which will trigger a CI build on your build servers. These build servers will not have any knowledge of Liferay dependencies nor will they allow us to install Liferay on the servers to satisfy those dependencies (if you were to use ANT). This is where Maven comes into the picture nicely. The idea would be that I could create a POM file for my plugin and define a set of dependencies that Liferay maintains in their Maven repository. Some attention would be needed to define which dependencies would be for EE customers too. From there, our build server would build based on the POM and pull down the Maven dependencies to satisfy the requirements for a successful build. Finally, we could then deploy the resulting build artifact (Liferay plugin WAR) to our internal Maven repository for our INFRA team to deploy to the various environments we have. As per Maven’s design we could deploy as a SNAPSHOT build for our DEV/TEST environment and then a Release build with a release number for PROD deployments. As an example, a POM may define a Liferay dependency as follows like you show above: <dependencies> <dependency> <groupId>com.liferay</groupId> <artifactId>portal-service</artifactId> <version>6.0.5</version> </dependency> ... </dependencies>We would then define a repository for the Liferay dependencies where we could retrieve this dependency: <repository> <id>Liferay</id> <name>Liferay Repsitory</name> <url>http://repository.liferay.com/maven2</url> </repository>Finally, in your repository, you could establish the transitive dependencies you require (i.e., the ones needed to compile your jar) in your .pom file that will be hosted in the repository so that when someone pulls the Liferay jar it will also pull those dependencies as well. As an example, see the Spring pom from Maven repo that illustrates how they require commons-logging, commons-collections and others. This way you will always have full control of which dependencies you want the customer to use with your JAR so they don’t go and muck things up by using an obsolete version.I really look forward to seeing Liferay provide Maven dependencies for EE customers as well in a future release. Please sign in to reply. Reply as... Cancel
Wayne Lund 13 Years Ago Is there a wiki page on this that we can edit now. I've been working through the blog but had a number of issues come up. got down to step #5 but have not been able to successfully deploy yet with maven. I got errors in the mvn archetype:generate that are hanging me up. Please sign in to reply. Reply as... Cancel Mika Koivisto Wayne Lund 13 Years Ago If you have problems you can post to the message boards for help. Please sign in to reply. Reply as... Cancel
Mika Koivisto Wayne Lund 13 Years Ago If you have problems you can post to the message boards for help. Please sign in to reply. Reply as... Cancel
Sven Ehlert 13 Years Ago Thanks for the work, this is a first step for proper Maven support. I just checked the daily build, and the generated Liferay POMs are incomplete - internal portal dependencies are included, but all non-Liferay dependencies are missing. Will this be fixed before 6.0 GA? Please sign in to reply. Reply as... Cancel Mika Koivisto Sven Ehlert 13 Years Ago Liferay artifacts are provided so that you can develop agains Liferay APIs and this should not require any non-Liferay libraries. If you are referring to portal-impl that is ONLY meant for maven plugins like ServiceBuilder plugin and that plugin will declare itself what it needs. Since we are not building Liferay with maven we won't do double maintenance on the dependencies as those are already mentioned in versions.xml and no one really should use portal-impl in their application anyway. If there is anything else that is actually needed and is missing let me know and I'll fix it. Please sign in to reply. Reply as... Cancel Sven Ehlert Mika Koivisto 13 Years Ago Mika, thanks for the clarification. I can see why you don't want to do double dependency maintenance. However, what would indeed help developers if you could extend the build-maven.xml to build both the code jars and the java-source jars. The steps to create a source-jar are quite easy. First, create a jar with the plain source, then do something like this:mvn deploy:deploy-file -DgroupId=$GROUP_ID -DartifactId=$dir -Dversion=$VERSION -Dpackaging=java-source -Dfile=$dir/$dir-sources.jar -DrepositoryId=$REPOSITORY_ID -Durl=$URLThanks! Please sign in to reply. Reply as... Cancel
Mika Koivisto Sven Ehlert 13 Years Ago Liferay artifacts are provided so that you can develop agains Liferay APIs and this should not require any non-Liferay libraries. If you are referring to portal-impl that is ONLY meant for maven plugins like ServiceBuilder plugin and that plugin will declare itself what it needs. Since we are not building Liferay with maven we won't do double maintenance on the dependencies as those are already mentioned in versions.xml and no one really should use portal-impl in their application anyway. If there is anything else that is actually needed and is missing let me know and I'll fix it. Please sign in to reply. Reply as... Cancel Sven Ehlert Mika Koivisto 13 Years Ago Mika, thanks for the clarification. I can see why you don't want to do double dependency maintenance. However, what would indeed help developers if you could extend the build-maven.xml to build both the code jars and the java-source jars. The steps to create a source-jar are quite easy. First, create a jar with the plain source, then do something like this:mvn deploy:deploy-file -DgroupId=$GROUP_ID -DartifactId=$dir -Dversion=$VERSION -Dpackaging=java-source -Dfile=$dir/$dir-sources.jar -DrepositoryId=$REPOSITORY_ID -Durl=$URLThanks! Please sign in to reply. Reply as... Cancel
Sven Ehlert Mika Koivisto 13 Years Ago Mika, thanks for the clarification. I can see why you don't want to do double dependency maintenance. However, what would indeed help developers if you could extend the build-maven.xml to build both the code jars and the java-source jars. The steps to create a source-jar are quite easy. First, create a jar with the plain source, then do something like this:mvn deploy:deploy-file -DgroupId=$GROUP_ID -DartifactId=$dir -Dversion=$VERSION -Dpackaging=java-source -Dfile=$dir/$dir-sources.jar -DrepositoryId=$REPOSITORY_ID -Durl=$URLThanks! Please sign in to reply. Reply as... Cancel
Bruno Vernay 13 Years Ago I downloaded the sources from http://releases.liferay.com/portal/6.0.1/(By the way, it is very useful to be able to download the source tarbal from a web site !)The compilation went fine, but there are error due to the changing version number maven expect 6.0.0, but the repository contains version 6.0.1.I have no SVN access from work.Will the next version be 6.0.2 ? The http://releases.liferay.com/portal/ hasn't been updated since the 19/04/2010. Also it would be very nice to have the source tarbal in the "nightly" too and not just the war. Please sign in to reply. Reply as... Cancel Bruno Vernay Bruno Vernay 13 Years Ago I changed 6.0.0 to 6.0.1 in all pom.xml in maven-support and it worked.I created a portlet with the archetype, configured the deploy property in the pom. It works great ! Please sign in to reply. Reply as... Cancel Ken Helmes Bruno Vernay 13 Years Ago Nice, Mika. I took a look at the archetypes and there doesn't seem to be any maven support yet for the ext environment. Is that underway too? Please sign in to reply. Reply as... Cancel Juan Fernández Ken Helmes 13 Years Ago Hi Ken: as the extension environment is moving to "extlets" (that are plugins in the end), that would be possible in a not-that-far future Please sign in to reply. Reply as... Cancel Mika Koivisto Ken Helmes 13 Years Ago Ext support is planned for later. Please sign in to reply. Reply as... Cancel
Bruno Vernay Bruno Vernay 13 Years Ago I changed 6.0.0 to 6.0.1 in all pom.xml in maven-support and it worked.I created a portlet with the archetype, configured the deploy property in the pom. It works great ! Please sign in to reply. Reply as... Cancel Ken Helmes Bruno Vernay 13 Years Ago Nice, Mika. I took a look at the archetypes and there doesn't seem to be any maven support yet for the ext environment. Is that underway too? Please sign in to reply. Reply as... Cancel Juan Fernández Ken Helmes 13 Years Ago Hi Ken: as the extension environment is moving to "extlets" (that are plugins in the end), that would be possible in a not-that-far future Please sign in to reply. Reply as... Cancel Mika Koivisto Ken Helmes 13 Years Ago Ext support is planned for later. Please sign in to reply. Reply as... Cancel
Ken Helmes Bruno Vernay 13 Years Ago Nice, Mika. I took a look at the archetypes and there doesn't seem to be any maven support yet for the ext environment. Is that underway too? Please sign in to reply. Reply as... Cancel Juan Fernández Ken Helmes 13 Years Ago Hi Ken: as the extension environment is moving to "extlets" (that are plugins in the end), that would be possible in a not-that-far future Please sign in to reply. Reply as... Cancel Mika Koivisto Ken Helmes 13 Years Ago Ext support is planned for later. Please sign in to reply. Reply as... Cancel
Juan Fernández Ken Helmes 13 Years Ago Hi Ken: as the extension environment is moving to "extlets" (that are plugins in the end), that would be possible in a not-that-far future Please sign in to reply. Reply as... Cancel
Mika Koivisto Ken Helmes 13 Years Ago Ext support is planned for later. Please sign in to reply. Reply as... Cancel
Juan Fernández 13 Years Ago Added a wiki page with this info(http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+Maven+SDK) Please sign in to reply. Reply as... Cancel
Robert McKinnon 13 Years Ago Thank you for this blog and it is a relief to learn that the community is working on getting an integrated solution working with Maven. I went through the steps and there are a few things that I ran into:1.) I had to set the JAVA_HOME environment variable in order to get the following command to work “ant clean start jar”2.) I am currently fighting an issue where the liferay artifacts when deployed contain “${maven.version}”. For example: com/liferay/portal/portal-client/${maven.version}/portal-client-${maven.version}.jar. I am not sure how the maven.version variable gets set.In any event thank you for the maven integration. Please sign in to reply. Reply as... Cancel simeon mitev Robert McKinnon 13 Years Ago The same issue here. When I setup manually the variable "maven.version" in my release.{$username}.properties its ok but then all artfacts get uploaded containing maven version ??? This should be the artifacts' version instead of maven's version, right? Please sign in to reply. Reply as... Cancel Baptiste Grenier simeon mitev 13 Years Ago I was able to handle the ${maven.version} problem and some more problems, but I was stuck later... You can find the details (and a solution for the ${maven.version} problem in the following thread: http://www.liferay.com/community/forums/-/message_boards/message/5147190Regards,Baptiste Please sign in to reply. Reply as... Cancel
simeon mitev Robert McKinnon 13 Years Ago The same issue here. When I setup manually the variable "maven.version" in my release.{$username}.properties its ok but then all artfacts get uploaded containing maven version ??? This should be the artifacts' version instead of maven's version, right? Please sign in to reply. Reply as... Cancel Baptiste Grenier simeon mitev 13 Years Ago I was able to handle the ${maven.version} problem and some more problems, but I was stuck later... You can find the details (and a solution for the ${maven.version} problem in the following thread: http://www.liferay.com/community/forums/-/message_boards/message/5147190Regards,Baptiste Please sign in to reply. Reply as... Cancel
Baptiste Grenier simeon mitev 13 Years Ago I was able to handle the ${maven.version} problem and some more problems, but I was stuck later... You can find the details (and a solution for the ${maven.version} problem in the following thread: http://www.liferay.com/community/forums/-/message_boards/message/5147190Regards,Baptiste Please sign in to reply. Reply as... Cancel
Sudhaker Raj 13 Years Ago Any update on #6?Looking forward to have a painless way to create spring & jsf portlets:-)Thanks for great explanation. Please sign in to reply. Reply as... Cancel