mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-10 10:12:19 -06:00
feat: Save uploaded avatar as png instead of jpg to avoid quality loss (OD-2594)
This commit is contained in:
parent
c40ed5b998
commit
ecace0afe3
2
pom.xml
2
pom.xml
@ -9,7 +9,7 @@
|
||||
<version>1.2.3</version>
|
||||
</parent>
|
||||
<artifactId>server</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
<packaging>pom</packaging>
|
||||
<build>
|
||||
<finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
@ -24,8 +24,8 @@ public class AvatarGenerator {
|
||||
ImmutableSet.copyOf(localGraphics.getAvailableFontFamilyNames());
|
||||
}
|
||||
|
||||
private static final int DEFAULT_WIDTH = 256;
|
||||
private static final int DEFAULT_HEIGHT = 256;
|
||||
private static final int DEFAULT_WIDTH = 240;
|
||||
private static final int DEFAULT_HEIGHT = 240;
|
||||
private static final String DEFAULT_FONT = "Helvetica";
|
||||
|
||||
private static final int VERSION = 1;
|
||||
|
||||
@ -18,9 +18,9 @@ public interface AvatarService {
|
||||
|
||||
void useProjectAvatar(Long projectId, @Nullable String avatarData);
|
||||
|
||||
File getUserUploadedFile(Long userId);
|
||||
File getUserUploadedFile(Long userId, @Nullable String extension);
|
||||
|
||||
File getProjectUploadedFile(Long projectId);
|
||||
File getProjectUploadedFile(Long projectId, @Nullable String extension);
|
||||
|
||||
void copyProjectAvatar(Long fromProjectId, Long toProjectId);
|
||||
|
||||
|
||||
@ -61,6 +61,10 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
return new ManagedSerializedForm(AvatarService.class);
|
||||
}
|
||||
|
||||
private String getFileExtension(File file) {
|
||||
return StringUtils.substringAfterLast(file.getName(), ".");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUserAvatarUrl(Long userId) {
|
||||
if (userId.equals(User.UNKNOWN_ID)) {
|
||||
@ -68,9 +72,9 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
} else if (userId.equals(User.SYSTEM_ID)) {
|
||||
return AVATARS_BASE_URL + "onedev.png";
|
||||
} else {
|
||||
File uploadedFile = getUserUploadedFile(userId);
|
||||
File uploadedFile = getUserUploadedFile(userId, null);
|
||||
if (uploadedFile.exists())
|
||||
return AVATARS_BASE_URL + "uploaded/users/" + userId + ".jpg?version=" + uploadedFile.lastModified();
|
||||
return AVATARS_BASE_URL + "uploaded/users/" + userId + "." + getFileExtension(uploadedFile) + "?version=" + uploadedFile.lastModified();
|
||||
|
||||
EmailAddressFacade emailAddress = emailAddressService.findPrimaryFacade(userId);
|
||||
UserFacade user = userService.findFacadeById(userId);
|
||||
@ -154,8 +158,17 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getUserUploadedFile(Long userId) {
|
||||
return new File(Bootstrap.getSiteDir(), "assets/avatars/uploaded/users/" + userId + ".jpg");
|
||||
public File getUserUploadedFile(Long userId, String extension) {
|
||||
var pathSegments = "assets/avatars/uploaded/users/";
|
||||
if (extension != null) {
|
||||
return new File(Bootstrap.getSiteDir(), pathSegments + userId + "." + extension);
|
||||
} else {
|
||||
var file = new File(Bootstrap.getSiteDir(), pathSegments + userId + ".png");
|
||||
if (file.exists())
|
||||
return file;
|
||||
else
|
||||
return new File(Bootstrap.getSiteDir(), pathSegments + userId + ".jpg");
|
||||
}
|
||||
}
|
||||
|
||||
private String getUserUploadedLockName(Long userId) {
|
||||
@ -165,18 +178,26 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
@Override
|
||||
public void useUserAvatar(Long userId, String avatarData) {
|
||||
clusterService.runOnAllServers(() -> write(getUserUploadedLockName(userId), () -> {
|
||||
File avatarFile = getUserUploadedFile(userId);
|
||||
File avatarFile = getUserUploadedFile(userId, "png");
|
||||
createDir(avatarFile.getParentFile());
|
||||
writeToFile(avatarFile, avatarData);
|
||||
if (avatarData != null) {
|
||||
writeToFile(avatarFile, avatarData);
|
||||
} else {
|
||||
if (avatarFile.exists())
|
||||
FileUtils.deleteFile(avatarFile);
|
||||
avatarFile = getUserUploadedFile(userId, "jpg");
|
||||
if (avatarFile.exists())
|
||||
FileUtils.deleteFile(avatarFile);
|
||||
}
|
||||
return null;
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProjectAvatarUrl(Long projectId) {
|
||||
File avatarFile = getProjectUploadedFile(projectId);
|
||||
File avatarFile = getProjectUploadedFile(projectId, null);
|
||||
if (avatarFile.exists())
|
||||
return AVATARS_BASE_URL + "uploaded/projects/" + projectId + ".jpg?version=" + avatarFile.lastModified();
|
||||
return AVATARS_BASE_URL + "uploaded/projects/" + projectId + "." + getFileExtension(avatarFile) + "?version=" + avatarFile.lastModified();
|
||||
else
|
||||
return AVATARS_BASE_URL + "project.png";
|
||||
}
|
||||
@ -184,16 +205,33 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
@Override
|
||||
public void useProjectAvatar(Long projectId, String avatarData) {
|
||||
clusterService.runOnAllServers(() -> write(getProjectUploadedLockName(projectId), () -> {
|
||||
File avatarFile = getProjectUploadedFile(projectId);
|
||||
File avatarFile = getProjectUploadedFile(projectId, "png");
|
||||
createDir(avatarFile.getParentFile());
|
||||
writeToFile(avatarFile, avatarData);
|
||||
if (avatarData != null) {
|
||||
writeToFile(avatarFile, avatarData);
|
||||
} else {
|
||||
if (avatarFile.exists())
|
||||
FileUtils.deleteFile(avatarFile);
|
||||
avatarFile = getProjectUploadedFile(projectId, "jpg");
|
||||
if (avatarFile.exists())
|
||||
FileUtils.deleteFile(avatarFile);
|
||||
}
|
||||
return null;
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getProjectUploadedFile(Long projectId) {
|
||||
return new File(Bootstrap.getSiteDir(), "assets/avatars/uploaded/projects/" + projectId + ".jpg");
|
||||
public File getProjectUploadedFile(Long projectId, String extension) {
|
||||
var pathSegments = "assets/avatars/uploaded/projects/";
|
||||
if (extension != null) {
|
||||
return new File(Bootstrap.getSiteDir(), pathSegments + projectId + "." + extension);
|
||||
} else {
|
||||
var file = new File(Bootstrap.getSiteDir(), pathSegments + projectId + ".png");
|
||||
if (file.exists())
|
||||
return file;
|
||||
else
|
||||
return new File(Bootstrap.getSiteDir(), pathSegments + projectId + ".jpg");
|
||||
}
|
||||
}
|
||||
|
||||
private String getProjectUploadedLockName(Long projectId) {
|
||||
@ -203,10 +241,10 @@ public class DefaultAvatarService implements AvatarService, Serializable {
|
||||
@Override
|
||||
public void copyProjectAvatar(Long fromProjectId, Long toProjectId) {
|
||||
clusterService.runOnAllServers(() -> {
|
||||
var fromFile = getProjectUploadedFile(fromProjectId);
|
||||
var toFile = getProjectUploadedFile(toProjectId);
|
||||
var fromFile = getProjectUploadedFile(fromProjectId, null);
|
||||
var toFile = getProjectUploadedFile(toProjectId, getFileExtension(fromFile));
|
||||
var readLockName = getProjectUploadedLockName(fromProjectId);
|
||||
if (read(readLockName, () -> fromFile.exists())) {
|
||||
if (fromFile.exists()) {
|
||||
var tempFile = new File(toFile.getParentFile(), UUID.randomUUID().toString());
|
||||
try {
|
||||
read(readLockName, () -> {
|
||||
|
||||
@ -5,7 +5,6 @@ import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.jspecify.annotations.Nullable;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.xml.bind.DatatypeConverter;
|
||||
|
||||
@ -22,7 +21,6 @@ import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.web.behavior.AbstractPostAjaxBehavior;
|
||||
|
||||
@ -71,17 +69,13 @@ public class AvatarUploadField extends FormComponentPanel<String> {
|
||||
setConvertedInput(dataField.getConvertedInput());
|
||||
}
|
||||
|
||||
public static void writeToFile(File file, @Nullable String avatarData) {
|
||||
if (avatarData != null) {
|
||||
byte[] imageBytes = DatatypeConverter.parseBase64Binary(StringUtils.substringAfter(avatarData, ","));
|
||||
try {
|
||||
BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes));
|
||||
ImageIO.write(image, "jpeg", file);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} else if (file.exists()) {
|
||||
FileUtils.deleteFile(file);
|
||||
public static void writeToFile(File file, String avatarData) {
|
||||
byte[] imageBytes = DatatypeConverter.parseBase64Binary(StringUtils.substringAfter(avatarData, ","));
|
||||
try {
|
||||
BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes));
|
||||
ImageIO.write(image, "png", file);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ public class AvatarEditPanel extends GenericPanel<User> {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
setVisible(getAvatarService().getUserUploadedFile(getUser().getId()).exists());
|
||||
setVisible(getAvatarService().getUserUploadedFile(getUser().getId(), null).exists());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,6 +2,8 @@ package io.onedev.server.web.page.project.setting.avatar;
|
||||
|
||||
import static io.onedev.server.web.translation.Translation._T;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.wicket.Component;
|
||||
import org.apache.wicket.behavior.AttributeAppender;
|
||||
import org.apache.wicket.event.IEvent;
|
||||
@ -21,16 +23,15 @@ import io.onedev.server.web.page.project.setting.ProjectSettingPage;
|
||||
|
||||
public class AvatarEditPage extends ProjectSettingPage {
|
||||
|
||||
@Inject
|
||||
private AvatarService avatarService;
|
||||
|
||||
private String uploadedAvatarData;
|
||||
|
||||
public AvatarEditPage(PageParameters params) {
|
||||
super(params);
|
||||
}
|
||||
|
||||
private AvatarService getAvatarService() {
|
||||
return OneDev.getInstance(AvatarService.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onInitialize() {
|
||||
super.onInitialize();
|
||||
@ -42,12 +43,12 @@ public class AvatarEditPage extends ProjectSettingPage {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
setVisible(getAvatarService().getProjectUploadedFile(getProject().getId()).exists());
|
||||
setVisible(avatarService.getProjectUploadedFile(getProject().getId(), null).exists());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
getAvatarService().useProjectAvatar(getProject().getId(), null);
|
||||
avatarService.useProjectAvatar(getProject().getId(), null);
|
||||
setResponsePage(AvatarEditPage.class, AvatarEditPage.paramsOf(getProject()));
|
||||
}
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 6ee966cf6f50eb9754d8aca94b0a03889bbfa9b4
|
||||
Subproject commit fc8f4fad4f001fce72b1f6805383e0b0951dd17a
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<build>
|
||||
<resources>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.authenticator.ldap.LdapModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.buildspec.bazel.BazelModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.buildspec.node.NodePluginModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.executor.kubernetes.KubernetesModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.executor.serverdocker.ServerDockerModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.executor.servershell.ServerShellModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.bitbucketcloud.BitbucketModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.gitea.GiteaModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.github.GitHubModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.gitlab.GitLabModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.jiracloud.JiraModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.url.UrlModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.imports.youtrack.YouTrackModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.mail.gmail.GmailModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.mail.office365.Office365Module</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.mail.smtpimap.SmtpImapModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.notification.discord.DiscordModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.notification.ntfy.NtfyModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.notification.slack.SlackModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.report.coverage.CoverageModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.report.html.HtmlModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.report.markdown.MarkdownModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.report.problem.ProblemModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.report.unittest.UnitTestModule</moduleClass>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.sso.discord.DiscordModule</moduleClass>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server-plugin</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<properties>
|
||||
<moduleClass>io.onedev.server.plugin.sso.openid.OpenIdModule</moduleClass>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>io.onedev</groupId>
|
||||
<artifactId>server</artifactId>
|
||||
<version>13.0.9</version>
|
||||
<version>13.0.10</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 21 KiB |
Loading…
x
Reference in New Issue
Block a user