Picture

Hi, I'm Nelson Gustavo.

Sou um programador e desenvolvo coisas. Esse é o MEU blog com minhas opiniões pessoais.

Como compilar o código fonte do Liferay

Na última quarta-feira o mundo tomou ciência de um novo Malware chamado freakout, que basicamente infecta servidores linux para servirem como cliente para ataques DDoS ou minerar criptomoedas.

Uma das vulnerabilidades foi identificada no Liferay, em todas as versões, porém a Liferay só disponibiliza patches de correção para distribuições enterprise.

Como temos vários portais em versões diferentes e até mesmo community, para aplicar o patch com as correções de segurança temos que re compilar o portal a partir do seu código fonte, isso pode até parecer uma tarefa fácil, mas não é.

A Liferay disponibiliza um tutorial de como fazer isso, mas existem várias lacunas que não foram preenchidas, meu objetivo nesse post é preenchê-las.

Pré requisitos

O Primeiro passo é garantir que você tenha instalado as seguintes ferramentas:

Clonando as dependências do portal

Clonar estas dependências do portal vai acelerar o processo de build.

git clone https://github.com/liferay/liferay-binaries-cache-2020 --branch master --single-branch --depth 1

Clonando o portal

Vamos clonar o portal no mesmo diretório.

git clone git@github.com:liferay/liferay-portal.git

Estrutura de diretórios

As dependências e o portal presiam estar dentro do mesmo diretório, observe a variável build.binaries.cache.dir no arquivo de configuração build.properties.

Rode este comandos a partir do diretório do portal

ant all

Esta task vai vai executar todas as outras, inclusive compilar e buildar o portal.

Troubleshooting

Alguns problemas que encontrei ao fazer ete processo foram:

Please use Java 1.8.

Para resolver este problema instale A JDK 8 do Java e exporte a variável de ambiente JAVA_HOME apontando para a JDK no arquivo .bashrc ou .zshrc.

Outro problema que encontrei foi esse:

[typedef] Could not load definitions from resource org/apache/maven/artifact/ant/antlib.xml. It could not be found.

Adicionar o jar maven-ant-tasks-2.1.3.jar do antlib dentro da pasta liferay-portal/lib/development, resolveu o problema.

A lib do Jacoco também pode dar o mesmo problema.

  [taskdef] Could not load definitions from resource org/jacoco/ant/antlib.xml. It could not be found.

Se isso acontecer, basta adicionar o jar jacoco-0.8.6.jar na pasta liferay-portal/lib/development

Também tive que setar um espaço de memória maior pro ant

export ANT_OPTS=-Xmx2560m

Bom, isso é tudo pessoal.