Created
July 4, 2023 16:08
-
-
Save gifflet/e37ae6c86aa32b631cfe494f92ad94d2 to your computer and use it in GitHub Desktop.
Maven Multi Module Deploy Scripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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