Skip to content

Instantly share code, notes, and snippets.

@gifflet
Created July 4, 2023 16:08
Show Gist options
  • Save gifflet/e37ae6c86aa32b631cfe494f92ad94d2 to your computer and use it in GitHub Desktop.
Save gifflet/e37ae6c86aa32b631cfe494f92ad94d2 to your computer and use it in GitHub Desktop.
Maven Multi Module Deploy Scripts
#!/bin/bash
repository_url=$1 # Maven repository URL
username=$2 # Nome de usuário para autenticação no repositório
password=$3 # Senha para autenticação no repositório
# Configurar o arquivo settings.xml com as credenciais
cat >settings.xml <<EOF
<settings>
<servers>
<server>
<id>maven-repository</id>
<username>$username</username>
<password>$password</password>
</server>
</servers>
</settings>
EOF
# Fazer cada grupo de módulos fazer o deploy dos módulos que não estão disponíveis no repositório remoto
analyse_module_group() {
local module_group_dir="$1"
# Itera as subpastas
for folder in "$module_group_dir"/*; do
if [[ -f "$folder/pom.xml" ]]; then
# Extrai informações do pom.xml usando o plugin Maven
mvn_help_output=$(mvn -f "$folder/pom.xml" -Dexec.executable='echo' \
--settings settings.xml \
-Dexec.args='${project.groupId},${project.artifactId},${project.version}' \
--non-recursive exec:exec -q)
# Definir o IFS como vírgula para separar a string
IFS=','
# Converter a string em um array usando o IFS
read -ra parts <<<"$mvn_help_output"
# Atribuir as partes às variáveis apropriadas
group_id=${parts[0]}
artifact_id=${parts[1]}
version=${parts[2]}
# Exibe as informações
echo "Subpasta: $folder"
echo "groupId: $group_id"
echo "artifactId: $artifact_id"
echo "version: $version"
echo "------------------------"
./is_in_repository.sh "$repository_url" "$username" "$password" "$group_id" "$artifact_id" "$version"
# Verifica se o artefato não está no repositório remoto
if [ $? -eq 1 ]; then
mvn -f "$folder/pom.xml" --settings settings.xml -DskipTests deploy
fi
fi
done
}
mvn --settings settings.xml clean install -f "pom.xml"
analyse_module_group "modules"
# Remover o arquivo settings.xml
rm -f settings.xml
#!/bin/bash
repository_url=$1 # Maven repository URL
username=$2 # Nome de usuário para autenticação no repositório
password=$3 # Senha para autenticação no repositório
dependency_group=$4 # Group ID of the dependency
dependency_artifact=$5 # Artifact ID of the dependency
dependency_version=$6 # Version of the dependency
# Construir a URL de pesquisa para a dependência
search_url="${repository_url}/${dependency_group//./\/}/${dependency_artifact}/${dependency_version}/${dependency_artifact}-${dependency_version}.jar"
echo $search_url
# Enviar uma solicitação HEAD para a URL de pesquisa com autenticação
response_code=$(curl -sL -w "%{http_code}" -o /dev/null -u "${username}:${password}" "${search_url}")
# Verificar o código de resposta
if [ "$response_code" -eq 200 ]; then
echo "A dependência ${dependency_group}:${dependency_artifact}:${dependency_version} está disponível no repositório Maven."
exit 0
else
echo "A dependência ${dependency_group}:${dependency_artifact}:${dependency_version} não está disponível no repositório Maven."
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment