Fix issue #372 - Custom logo and company name

This commit is contained in:
Robin Shen 2022-05-11 17:30:38 +08:00
parent fb89b313ca
commit 86b46267ea
73 changed files with 522 additions and 1829 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@ server-product/docker/onedev-*/
**/.idea
release.properties
pom.xml.releaseBackup
pom.xml.versionsBackup
.loadpath
*~

View File

@ -1,616 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.onedev</groupId>
<artifactId>parent</artifactId>
<version>1.0.5</version>
</parent>
<artifactId>server</artifactId>
<version>7.1.7</version>
<packaging>pom</packaging>
<build>
<finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr.version}</version>
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<listener>true</listener>
<visitor>true</visitor>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>io.onedev</groupId>
<artifactId>plugin-maven</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<?m2e execute onConfiguration,onIncremental?>
<id>populate-resources</id>
<phase>process-resources</phase>
<goals>
<goal>populate-resources</goal>
</goals>
</execution>
<execution>
<id>package-artifacts</id>
<phase>package</phase>
<goals>
<goal>package-artifacts</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>default-jar</id>
<phase>never</phase>
<configuration>
<finalName>unwanted</finalName>
<classifier>unwanted</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
<exclude>**/*.scss</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>target/generated-sources/antlr4</directory>
<includes>
<include>*.tokens</include>
</includes>
</resource>
</resources>
</build>
<modules>
<module>server-core</module>
<module>server-plugin</module>
<module>server-product</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-bootstrap</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-loader</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-loader</artifactId>
<type>test-jar</type>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-utils</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-codeassist</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-jsymbol</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-jsyntax</artifactId>
<version>${commons.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-extensions</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-request</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-util</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-devutils</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-native-websocket-core</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.security</groupId>
<artifactId>oauth2-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>oauth2-oidc-sdk</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-android</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.ocpsoft.prettytime</groupId>
<artifactId>prettytime</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>guice-bridge</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.jetbrains.xodus</groupId>
<artifactId>xodus-entity-store</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>${tika.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.26</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.69</version>
</dependency>
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
<version>1.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queries</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-smartcn</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-backward-codecs</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-guice</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.19</version>
</dependency>
<dependency>
<groupId>com.joestelmach</groupId>
<artifactId>natty</artifactId>
<version>0.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>juniversalchardet</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-autolink</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-anchorlink</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-definition</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-tables</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-gfm-tasklist</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-toc</artifactId>
<version>${flexmark.version}</version>
</dependency>
<dependency>
<groupId>de.taimos</groupId>
<artifactId>totp</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.http.server</artifactId>
<version>${jgit.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.gpg.bc</artifactId>
<version>${jgit.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.archive</artifactId>
<version>${jgit.version}</version>
</dependency>
<dependency>
<groupId>net.i2p.crypto</groupId>
<artifactId>eddsa</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jacksondatabind.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>agent</artifactId>
<version>${agent.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>onedev</id>
<url>https://artifact.onedev.io/artifactory/onedev</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<properties>
<commons.version>2.1.2</commons.version>
<agent.version>1.3.5</agent.version>
<slf4j.version>1.7.30</slf4j.version>
<logback.version>1.2.9</logback.version>
<antlr.version>4.7.2</antlr.version>
<jetty.version>9.4.43.v20210629</jetty.version>
<wicket.version>7.17.0</wicket.version>
<jersey.version>2.26</jersey.version>
<hibernate.version>5.4.24.Final</hibernate.version>
<wicketbootstrap.version>0.10.18</wicketbootstrap.version>
<lucene.version>8.7.0</lucene.version>
<shiro.version>1.7.1</shiro.version>
<jgit.version>5.13.0.202109080827-r</jgit.version>
<flexmark.version>0.62.2</flexmark.version>
<groovy.version>3.0.10</groovy.version>
<servlet.version>3.1.0</servlet.version>
<jackson.version>2.13.2</jackson.version>
<jacksondatabind.version>2.13.2.1</jacksondatabind.version>
<tika.version>1.24.1</tika.version>
</properties>
</project>

View File

@ -1,347 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-core</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>7.1.7</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-loader</artifactId>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-loader</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-codeassist</artifactId>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-jsymbol</artifactId>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-jsyntax</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.xodus</groupId>
<artifactId>xodus-entity-store</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<exclusions>
<exclusion>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queries</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-smartcn</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-backward-codecs</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-guice</artifactId>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
<groupId>com.joestelmach</groupId>
<artifactId>natty</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId>
</dependency>
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>juniversalchardet</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-autolink</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-anchorlink</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-definition</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-tables</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-gfm-tasklist</artifactId>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-ext-toc</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.http.server</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.gpg.bc</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.archive</artifactId>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
</dependency>
<dependency>
<groupId>net.i2p.crypto</groupId>
<artifactId>eddsa</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.security</groupId>
<artifactId>oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-extensions</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-request</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-util</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-devutils</artifactId>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-native-websocket-core</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
</dependency>
<dependency>
<groupId>org.ocpsoft.prettytime</groupId>
<artifactId>prettytime</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>guice-bridge</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jcache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
</dependency>
<dependency>
<groupId>de.taimos</groupId>
<artifactId>totp</artifactId>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>agent</artifactId>
</dependency>
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.CoreModule</moduleClass>
</properties>
</project>

View File

@ -9,6 +9,7 @@ import javax.annotation.Nullable;
import io.onedev.server.model.Setting;
import io.onedev.server.model.support.administration.AgentSetting;
import io.onedev.server.model.support.administration.BackupSetting;
import io.onedev.server.model.support.administration.BrandingSetting;
import io.onedev.server.model.support.administration.GlobalBuildSetting;
import io.onedev.server.model.support.administration.GlobalIssueSetting;
import io.onedev.server.model.support.administration.GlobalProjectSetting;
@ -105,6 +106,11 @@ public interface SettingManager extends EntityManager<Setting> {
* setting record will still be remained in database)
*/
void saveBackupSetting(@Nullable BackupSetting backupSetting);
@Nullable
BrandingSetting getBrandingSetting();
void saveBrandingSetting(@Nullable BrandingSetting brandingSetting);
SecuritySetting getSecuritySetting();
@ -155,7 +161,7 @@ public interface SettingManager extends EntityManager<Setting> {
SshSetting getSshSetting();
GpgSetting getGpgSetting();
void savePerformanceSetting(PerformanceSetting performanceSetting);
PerformanceSetting getPerformanceSetting();

View File

@ -22,6 +22,7 @@ import io.onedev.server.model.Setting;
import io.onedev.server.model.Setting.Key;
import io.onedev.server.model.support.administration.AgentSetting;
import io.onedev.server.model.support.administration.BackupSetting;
import io.onedev.server.model.support.administration.BrandingSetting;
import io.onedev.server.model.support.administration.GlobalBuildSetting;
import io.onedev.server.model.support.administration.GlobalIssueSetting;
import io.onedev.server.model.support.administration.GlobalProjectSetting;
@ -92,6 +93,8 @@ public class DefaultSettingManager extends BaseEntityManager<Setting> implements
private volatile Long performanceSettingId;
private volatile Long brandingSettingId;
@Inject
public DefaultSettingManager(Dao dao, DataManager dataManager) {
super(dao);
@ -187,6 +190,32 @@ public class DefaultSettingManager extends BaseEntityManager<Setting> implements
dataManager.scheduleBackup(backupSetting);
}
@Sessional
@Override
public BrandingSetting getBrandingSetting() {
Setting setting;
if (brandingSettingId == null) {
setting = getSetting(Key.BRANDING);
Preconditions.checkNotNull(setting);
brandingSettingId = setting.getId();
} else {
setting = load(brandingSettingId);
}
return (BrandingSetting) setting.getValue();
}
@Transactional
@Override
public void saveBrandingSetting(BrandingSetting brandingSetting) {
Setting setting = getSetting(Key.BRANDING);
if (setting == null) {
setting = new Setting();
setting.setKey(Key.BRANDING);
}
setting.setValue(brandingSetting);
dao.persist(setting);
}
@Sessional
@Override
public SecuritySetting getSecuritySetting() {

View File

@ -43,6 +43,7 @@ import io.onedev.server.model.Setting.Key;
import io.onedev.server.model.User;
import io.onedev.server.model.support.administration.AgentSetting;
import io.onedev.server.model.support.administration.BackupSetting;
import io.onedev.server.model.support.administration.BrandingSetting;
import io.onedev.server.model.support.administration.GlobalBuildSetting;
import io.onedev.server.model.support.administration.GlobalIssueSetting;
import io.onedev.server.model.support.administration.GlobalProjectSetting;
@ -361,6 +362,10 @@ public class DefaultDataManager implements DataManager, Serializable {
});
}
setting = settingManager.getSetting(Key.BRANDING);
if (setting == null)
settingManager.saveBrandingSetting(new BrandingSetting());
if (roleManager.get(Role.OWNER_ID) == null) {
Role owner = new Role();
owner.setName("Project Owner");

View File

@ -487,6 +487,7 @@ public class Upgrade extends DefaultPersistManager {
FileUtils.deleteFile(new File(upgradeDir, "boot/system.classpath"));
cleanAndCopy(Bootstrap.getLibDir(), new File(upgradeDir, "lib"));
for (File file: new File(Bootstrap.getSiteDir(), "avatars").listFiles()) {
if (file.isFile()) {
try {

View File

@ -23,7 +23,7 @@ public class Setting extends AbstractEntity {
public enum Key {SYSTEM, MAIL, BACKUP, SECURITY, AUTHENTICATOR, ISSUE, JOB_EXECUTORS,
GROOVY_SCRIPTS, PULL_REQUEST, BUILD, PROJECT, SSH, GPG, SSO_CONNECTORS,
NOTIFICATION_TEMPLATE_SETTING, CONTRIBUTED_SETTINGS, SERVICE_DESK_SETTING,
AGENT, PERFORMANCE};
AGENT, PERFORMANCE, BRANDING};
@Column(nullable=false, unique=true)
private Key key;

View File

@ -0,0 +1,26 @@
package io.onedev.server.model.support.administration;
import java.io.Serializable;
import org.hibernate.validator.constraints.NotEmpty;
import io.onedev.server.web.editable.annotation.Editable;
@Editable
public class BrandingSetting implements Serializable {
private static final long serialVersionUID = 1L;
private String name = "OneDev";
@Editable(order=100, description="Specify brand name which will be displayed at left top of the screen")
@NotEmpty
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

View File

@ -56,8 +56,8 @@ import org.apache.wicket.util.file.IResourceFinder;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.time.Duration;
import io.onedev.commons.loader.AppLoader;
import io.onedev.commons.bootstrap.Bootstrap;
import io.onedev.commons.loader.AppLoader;
import io.onedev.commons.utils.ExceptionUtils;
import io.onedev.commons.utils.ExplicitException;
import io.onedev.server.OneDev;
@ -69,8 +69,8 @@ import io.onedev.server.web.page.base.BasePage;
import io.onedev.server.web.page.layout.MainMenuCustomization;
import io.onedev.server.web.page.simple.error.GeneralErrorPage;
import io.onedev.server.web.page.simple.error.InUseErrorPage;
import io.onedev.server.web.resource.SvgSpriteResourceReference;
import io.onedev.server.web.resource.SvgSpriteResourceStream;
import io.onedev.server.web.resource.SpriteResourceReference;
import io.onedev.server.web.resource.SpriteResourceStream;
import io.onedev.server.web.resourcebundle.ResourceBundleReferences;
import io.onedev.server.web.util.AbsoluteUrlRenderer;
import io.onedev.server.web.websocket.WebSocketManager;
@ -111,8 +111,8 @@ public class WebApplication extends org.apache.wicket.protocol.http.WebApplicati
@Override
public IResourceStream find(Class<?> clazz, String pathname) {
if (pathname.contains(SvgSpriteResourceReference.RESOURCE_NAME))
return new SvgSpriteResourceStream(clazz);
if (pathname.contains(SpriteResourceReference.RESOURCE_NAME))
return new SpriteResourceStream(clazz);
else
return null;
}

View File

@ -0,0 +1,13 @@
package io.onedev.server.web.asset.fileupload;
import io.onedev.server.web.page.base.BaseDependentCssResourceReference;
public class FileUploadCssResourceReference extends BaseDependentCssResourceReference {
private static final long serialVersionUID = 1L;
public FileUploadCssResourceReference() {
super(FileUploadCssResourceReference.class, "file-upload.css");
}
}

View File

@ -0,0 +1,23 @@
input.custom-fileinput {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
input.custom-fileinput + label {
font-weight: normal;
border: 1px solid var(--secondary);
border-radius: 4px;
display: inline-block;
cursor: pointer;
padding: 6px 12px;
}
.dark-mode input.custom-fileinput + label {
border-color: #474761;
}
input.custom-fileinput:focus + label {
outline: 1px dotted var(--primary);
outline: -webkit-focus-ring-color auto 5px;
}

View File

@ -1,7 +1,7 @@
<wicket:panel>
<div class="avatar-upload">
<input type="text" wicket:id="data">
<input wicket:id="fileInput" type="file" accept="image/*">
<input wicket:id="fileInput" type="file" class="custom-fileinput" accept="image/*">
<label wicket:id="fileLabel"><wicket:svg href="image" class="icon"></wicket:svg> Select file...</label>
<div class="preview clearfix">
<div class="cropping float-left"><img></div>

View File

@ -7,6 +7,7 @@ import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import io.onedev.server.web.asset.cropper.CropperResourceReference;
import io.onedev.server.web.asset.fileupload.FileUploadCssResourceReference;
import io.onedev.server.web.page.base.BaseDependentCssResourceReference;
import io.onedev.server.web.page.base.BaseDependentResourceReference;
@ -22,6 +23,7 @@ public class AvatarUploadResourceReference extends BaseDependentResourceReferenc
public List<HeaderItem> getDependencies() {
List<HeaderItem> dependencies = super.getDependencies();
dependencies.add(JavaScriptHeaderItem.forReference(new CropperResourceReference()));
dependencies.add(CssHeaderItem.forReference(new FileUploadCssResourceReference()));
dependencies.add(CssHeaderItem.forReference(new BaseDependentCssResourceReference(
AvatarUploadResourceReference.class, "avatar-upload.css")));
return dependencies;

View File

@ -16,32 +16,10 @@
border-radius: 1000px;
overflow: hidden;
}
.avatar-upload.no-avatar .preview {
display: none;
}
.avatar-upload input[type="text"] {
display: none;
}
.avatar-upload input[type="file"] {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.avatar-upload input[type="file"] + label {
font-weight: normal;
border: 1px solid var(--secondary);
border-radius: 4px;
display: inline-block;
cursor: pointer;
padding: 6px 12px;
}
.dark-mode .avatar-upload input[type="file"] + label {
border-color: #474761;
}
.avatar-upload input[type="file"]:focus + label {
outline: 1px dotted var(--primary);
outline: -webkit-focus-ring-color auto 5px;
}
.avatar-upload.no-avatar .preview {
display: none;
}

View File

@ -0,0 +1,13 @@
package io.onedev.server.web.component.brandlogo;
import io.onedev.server.web.page.base.BaseDependentCssResourceReference;
public class BrandLogoCssResourceReference extends BaseDependentCssResourceReference {
private static final long serialVersionUID = 1L;
public BrandLogoCssResourceReference() {
super(BrandLogoCssResourceReference.class, "brand-logo.css");
}
}

View File

@ -0,0 +1,4 @@
<wicket:panel>
<img wicket:id="custom" class="brand-logo">
<svg wicket:id="onedev" class="brand-logo"/>
</wicket:panel>

View File

@ -0,0 +1,56 @@
package io.onedev.server.web.component.brandlogo;
import java.io.File;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.image.ExternalImage;
import org.apache.wicket.markup.html.panel.Panel;
import io.onedev.commons.bootstrap.Bootstrap;
import io.onedev.server.web.component.svg.SpriteImage;
@SuppressWarnings("serial")
public class BrandLogoPanel extends Panel {
public BrandLogoPanel(String id) {
super(id);
}
private File getCustomLogoFile() {
return new File(Bootstrap.getSiteDir(), "logo.png");
}
@Override
protected void onInitialize() {
super.onInitialize();
add(new ExternalImage("custom", "/site/logo.png?v=" + getCustomLogoFile().lastModified()) {
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(getCustomLogoFile().exists());
}
});
add(new SpriteImage("onedev", "logo") {
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(!getCustomLogoFile().exists());
}
});
setRenderBodyOnly(true);
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(CssHeaderItem.forReference(new BrandLogoCssResourceReference()));
}
}

View File

@ -0,0 +1,3 @@
svg.brand-logo {
fill: currentColor;
}

View File

@ -0,0 +1,55 @@
package io.onedev.server.web.component.fileupload;
import java.util.List;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.model.IModel;
import io.onedev.server.web.component.svg.SpriteImage;
@SuppressWarnings("serial")
public class FileUploadField extends org.apache.wicket.markup.html.form.upload.FileUploadField {
public FileUploadField(String id) {
super(id);
}
public FileUploadField(final String id, IModel<? extends List<FileUpload>> model) {
super(id, model);
}
@Override
protected void onInitialize() {
super.onInitialize();
add(AttributeAppender.append("class", "custom-fileinput"));
}
@Override
protected void onDetach() {
setConvertedInput(null);
super.onDetach();
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forReference(new FileUploadResourceReference()));
String script = String.format("onedev.server.fileUpload.onDomReady('%s', '%s', '%s');",
getMarkupId(true), getHint(), SpriteImage.getVersionedHref(getIcon()));
response.render(OnDomReadyHeaderItem.forScript(script));
}
protected String getHint() {
return "Select file...";
}
protected String getIcon() {
return "file";
}
}

View File

@ -0,0 +1,26 @@
package io.onedev.server.web.component.fileupload;
import java.util.List;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.HeaderItem;
import io.onedev.server.web.asset.fileupload.FileUploadCssResourceReference;
import io.onedev.server.web.page.base.BaseDependentResourceReference;
public class FileUploadResourceReference extends BaseDependentResourceReference {
private static final long serialVersionUID = 1L;
public FileUploadResourceReference() {
super(FileUploadResourceReference.class, "file-upload.js");
}
@Override
public List<HeaderItem> getDependencies() {
List<HeaderItem> dependencies = super.getDependencies();
dependencies.add(CssHeaderItem.forReference(new FileUploadCssResourceReference()));
return dependencies;
}
}

View File

@ -0,0 +1,9 @@
onedev.server.fileUpload = {
onDomReady: function(inputId, hint, iconUrl) {
var $input = $("#" + inputId);
$input.change(function() {
$input.next().children(".upload-hint").text($input[0].files[0].name);
});
$input.after("<label for='" + inputId + "'><svg class='icon'><use xlink:href='" + iconUrl + "'/></svg> <span class='upload-hint'>" + hint + "</span></label>");
}
}

View File

@ -22,7 +22,7 @@ import io.onedev.commons.utils.ExplicitException;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.web.asset.icon.IconScope;
import io.onedev.server.web.mapper.BaseResourceMapper;
import io.onedev.server.web.resource.SvgSpriteResourceReference;
import io.onedev.server.web.resource.SpriteResourceReference;
@SuppressWarnings("serial")
public class SpriteImage extends WebComponent {
@ -59,7 +59,7 @@ public class SpriteImage extends WebComponent {
public static String getVersionedHref(@Nullable Class<?> scope, @Nullable String name) {
if (scope == null)
scope = IconScope.class;
String baseUrl = RequestCycle.get().urlFor(new SvgSpriteResourceReference(scope), new PageParameters()).toString();
String baseUrl = RequestCycle.get().urlFor(new SpriteResourceReference(scope), new PageParameters()).toString();
if (name != null)
return baseUrl + "#" + name;
else
@ -87,8 +87,8 @@ public class SpriteImage extends WebComponent {
for (BaseResourceMapper mapper: resourceMappers) {
BaseResourceMapper baseMapper = (BaseResourceMapper) mapper;
if (StringUtils.strip(baseMapper.getPath(), "/").equalsIgnoreCase(mountPath)) {
if (baseMapper.getResourceReference() instanceof SvgSpriteResourceReference) {
scope = ((SvgSpriteResourceReference) baseMapper.getResourceReference()).getScope();
if (baseMapper.getResourceReference() instanceof SpriteResourceReference) {
scope = ((SpriteResourceReference) baseMapper.getResourceReference()).getScope();
} else {
throw new ExplicitException("Path '" + mountPath
+ "' should be mounted to a svg sprite resource reference");
@ -109,7 +109,7 @@ public class SpriteImage extends WebComponent {
symbol = StringUtils.strip(href, "/");
}
String spriteUrl = urlFor(new SvgSpriteResourceReference(scope), new PageParameters()).toString();
String spriteUrl = urlFor(new SpriteResourceReference(scope), new PageParameters()).toString();
replaceComponentTagBody(markupStream, openTag,
"<use xlink:href='" + spriteUrl + "#" + symbol + "'></use>");

View File

@ -9,6 +9,7 @@ import org.apache.wicket.request.mapper.CompoundRequestMapper;
import io.onedev.commons.utils.ExplicitException;
import io.onedev.server.web.asset.icon.IconScope;
import io.onedev.server.web.page.admin.authenticator.AuthenticatorPage;
import io.onedev.server.web.page.admin.brandingsetting.BrandingSettingPage;
import io.onedev.server.web.page.admin.buildsetting.agent.AgentBuildsPage;
import io.onedev.server.web.page.admin.buildsetting.agent.AgentListPage;
import io.onedev.server.web.page.admin.buildsetting.agent.AgentLogPage;
@ -143,7 +144,7 @@ import io.onedev.server.web.resource.AttachmentResourceReference;
import io.onedev.server.web.resource.BuildLogResourceReference;
import io.onedev.server.web.resource.RawBlobResourceReference;
import io.onedev.server.web.resource.ServerLogResourceReference;
import io.onedev.server.web.resource.SvgSpriteResourceReference;
import io.onedev.server.web.resource.SpriteResourceReference;
public class BaseUrlMapper extends CompoundRequestMapper {
@ -204,8 +205,8 @@ public class BaseUrlMapper extends CompoundRequestMapper {
add(new BaseResourceMapper("downloads/projects/${project}/builds/${build}/artifacts",
new ArtifactResourceReference()));
add(new BaseResourceMapper(SvgSpriteResourceReference.DEFAULT_MOUNT_PATH,
new SvgSpriteResourceReference(IconScope.class)));
add(new BaseResourceMapper(SpriteResourceReference.DEFAULT_MOUNT_PATH,
new SpriteResourceReference(IconScope.class)));
}
private void addErrorPages() {
@ -278,6 +279,8 @@ public class BaseUrlMapper extends CompoundRequestMapper {
add(new BasePageMapper("administration/settings/issue-links", LinkSpecListPage.class));
add(new BasePageMapper("administration/settings/issue-templates", IssueTemplateListPage.class));
add(new BasePageMapper("administration/settings/branding", BrandingSettingPage.class));
add(new BasePageMapper("administration/settings/${setting}", ContributedAdministrationSettingPage.class));
add(new BasePageMapper("administration/server-log", ServerLogPage.class));

View File

@ -12,4 +12,13 @@
}
.job-executors>.body>div>div>.card>.card-header {
border-bottom: none;
}
.logo-preview img, .logo-preview svg {
width: 128px;
height: 128px;
color: var(--dark);
}
.dark-mode .logo-preview svg {
color: var(--light);
}

View File

@ -0,0 +1,19 @@
<wicket:extend>
<div class="card branding-setting">
<div class="card-body">
<form wicket:id="brandingSetting" class="leave-confirm">
<div wicket:id="editor" class="mb-4"></div>
<div class="form-group">
<label class="control-label">Logo <span class="text-danger">*</span></label>
<div class="mb-2 logo-preview">
<span wicket:id="logoPreview"></span>
</div>
<input wicket:id="logoUpload" type="file" accept="image/png">
<div class="text-muted form-text">Upload a logo to be displayed at left top area of the screen.
It should be a 128x128 transparent png file</div>
</div>
<input wicket:id="save" type="submit" class="btn btn-primary dirty-aware mr-1" value="Save Setting">
</form>
</div>
</div>
</wicket:extend>

View File

@ -0,0 +1,113 @@
package io.onedev.server.web.page.admin.brandingsetting;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import io.onedev.commons.bootstrap.Bootstrap;
import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.model.support.administration.BrandingSetting;
import io.onedev.server.web.component.brandlogo.BrandLogoPanel;
import io.onedev.server.web.component.fileupload.FileUploadField;
import io.onedev.server.web.editable.BeanContext;
import io.onedev.server.web.editable.BeanEditor;
import io.onedev.server.web.page.admin.AdministrationPage;
@SuppressWarnings("serial")
public class BrandingSettingPage extends AdministrationPage {
private List<FileUpload> uploads;
public BrandingSettingPage(PageParameters params) {
super(params);
}
private File getLogoFile() {
return new File(Bootstrap.getSiteDir(), "logo.png");
}
@Override
protected void onInitialize() {
super.onInitialize();
BrandingSetting setting = OneDev.getInstance(SettingManager.class).getBrandingSetting();
BeanEditor editor = BeanContext.edit("editor", setting);
Button saveButton = new Button("save") {
@Override
public void onSubmit() {
super.onSubmit();
if (uploads != null && !uploads.isEmpty()) {
FileUpload upload = uploads.iterator().next();
try {
FileUtils.writeByteArrayToFile(getLogoFile(), upload.getBytes());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
OneDev.getInstance(SettingManager.class).saveBrandingSetting(setting);
getSession().success("Branding setting has been saved");
}
};
Form<?> form = new Form<Void>("brandingSetting");
form.setMultiPart(true);
form.add(editor);
form.add(new BrandLogoPanel("logoPreview"));
form.add(new FileUploadField("logoUpload", new IModel<List<FileUpload>>() {
@Override
public void detach() {
}
@Override
public List<FileUpload> getObject() {
return uploads;
}
@Override
public void setObject(List<FileUpload> object) {
uploads = object;
}
}) {
@Override
protected String getHint() {
return "Select file...";
}
@Override
protected String getIcon() {
return "image";
}
});
form.add(saveButton);
add(form);
}
@Override
protected Component newTopbarTitle(String componentId) {
return new Label(componentId, "Branding");
}
}

View File

@ -766,4 +766,5 @@ span.keycap {
.dark-mode span.keycap {
border-color: var(--gray-dark);
background: var(--dark-mode-dark);
}
}

View File

@ -2,8 +2,8 @@
<div wicket:id="sidebar" class="sidebar">
<div class="sidebar-header">
<a wicket:id="brandLink" class="sidebar-brand">
<wicket:svg href="logo" class="icon"></wicket:svg>
ONEDEV
<span wicket:id="brandLogo"></span>
<span wicket:id="brandName"></span>
</a>
<a href="javascript:void(0);" class="sidebar-mini-toggle d-none d-lg-inline"><wicket:svg href="expand3" class="icon"></wicket:svg></a>
<a href="javascript:void(0);" class="sidebar-close d-lg-none"><wicket:svg href="times" class="icon"></wicket:svg></a>
@ -15,7 +15,7 @@
</div>
</div>
<div class="sidebar-footer">
<div wicket:id="productVersion" class="sidebar-version"></div>
<a wicket:id="productVersion" class="sidebar-version"></a>
<div class="dropdown sidebar-help">
<a href="#" class="dropdown-toggle no-dropdown-caret" data-toggle="dropdown">
<wicket:svg href="question-o" class="icon"></wicket:svg>
@ -32,7 +32,7 @@
<div wicket:id="topbar" class="topbar">
<div class="topbar-left">
<a wicket:id="brandLink" class="topbar-brand">
<wicket:svg href="logo" class="icon"></wicket:svg>
<span wicket:id="brandLogo"></span>
</a>
<a class="sidebar-toggle topbar-link d-lg-none">
<wicket:svg href="menu" class="icon"></wicket:svg>

View File

@ -40,6 +40,7 @@ import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.model.User;
import io.onedev.server.security.SecurityUtils;
import io.onedev.server.web.component.brandlogo.BrandLogoPanel;
import io.onedev.server.web.component.commandpalette.CommandPalettePanel;
import io.onedev.server.web.component.floating.FloatingPanel;
import io.onedev.server.web.component.link.DropdownLink;
@ -50,6 +51,7 @@ import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.component.user.UserAvatar;
import io.onedev.server.web.editable.EditableUtils;
import io.onedev.server.web.page.admin.authenticator.AuthenticatorPage;
import io.onedev.server.web.page.admin.brandingsetting.BrandingSettingPage;
import io.onedev.server.web.page.admin.buildsetting.agent.AgentDetailPage;
import io.onedev.server.web.page.admin.buildsetting.agent.AgentListPage;
import io.onedev.server.web.page.admin.buildsetting.jobexecutor.JobExecutorsPage;
@ -123,7 +125,23 @@ public abstract class LayoutPage extends BasePage {
MainMenuCustomization customization = OneDev.getInstance(MainMenuCustomization.class);
sidebar.add(new BookmarkablePageLink<Void>("brandLink", customization.getHomePage()));
sidebar.add(new BookmarkablePageLink<Void>("brandLink", customization.getHomePage()) {
@Override
protected void onInitialize() {
super.onInitialize();
add(new BrandLogoPanel("brandLogo"));
add(new Label("brandName", new LoadableDetachableModel<String>() {
@Override
protected String load() {
return OneDev.getInstance(SettingManager.class).getBrandingSetting().getName();
}
}));
}
});
sidebar.add(new ListView<SidebarMenu>("menus", new LoadableDetachableModel<List<SidebarMenu>>() {
@ -215,6 +233,9 @@ public abstract class LayoutPage extends BasePage {
}
}
administrationMenuItems.add(new SidebarMenuItem.Page(null, "Branding",
BrandingSettingPage.class, new PageParameters()));
List<SidebarMenuItem> maintenanceMenuItems = new ArrayList<>();
maintenanceMenuItems.add(new SidebarMenuItem.Page(null, "Database Backup",
DatabaseBackupPage.class, new PageParameters()));
@ -320,7 +341,8 @@ public abstract class LayoutPage extends BasePage {
});
Plugin product = AppLoader.getProduct();
sidebar.add(new Label("productVersion", "Ver. " + product.getVersion()));
sidebar.add(new ExternalLink("productVersion", "https://code.onedev.io/projects/160")
.setBody(Model.of("OneDev " + product.getVersion())));
sidebar.add(new ExternalLink("docLink", OneDev.getInstance().getDocRoot() + "/"));
sidebar.add(new BookmarkablePageLink<Void>("incompatibilities", IncompatibilitiesPage.class));
@ -386,7 +408,15 @@ public abstract class LayoutPage extends BasePage {
}.setVisible(loginUser == null));
topbar.add(new BookmarkablePageLink<Void>("brandLink", customization.getHomePage()));
topbar.add(new BookmarkablePageLink<Void>("brandLink", customization.getHomePage()) {
@Override
protected void onInitialize() {
super.onInitialize();
add(new BrandLogoPanel("brandLogo"));
}
});
WebMarkupContainer userInfo = new WebMarkupContainer("userInfo");
if (loginUser != null) {

View File

@ -44,6 +44,7 @@
flex: 0 0 var(--topbar-height);
background: #1a1a27;
}
.sidebar-brand {
font-weight: 600;
font-size: 1.4rem;
@ -54,7 +55,7 @@
.sidebar .sidebar-brand:hover, .sidebar .sidebar-brand:focus {
color: white !important;
}
.sidebar-brand svg {
.sidebar-brand svg, .sidebar-brand img {
width: var(--brand-size);
height: var(--brand-size);
margin-right: 1rem;
@ -229,6 +230,10 @@
margin: 0 1rem 0 -0.4rem;
color: var(--gray-dark) !important;
}
.topbar-brand img {
width: var(--brand-size);
height: var(--brand-size);
}
.dark-mode .topbar-brand {
color: white !important;
}

View File

@ -1,7 +1,7 @@
<wicket:extend>
<div class="main text-center">
<div class="d-flex justify-content-center">
<svg wicket:id="logo" class="logo icon icon-hero"/>
<svg wicket:id="logo" class="brand-logo"/>
</div>
<div class="title">
<h3 wicket:id="title"></h3>

View File

@ -2,6 +2,7 @@ package io.onedev.server.web.page.simple;
import javax.annotation.Nullable;
import org.apache.wicket.Component;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
@ -9,7 +10,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.component.brandlogo.BrandLogoPanel;
import io.onedev.server.web.page.base.BasePage;
@SuppressWarnings("serial")
@ -22,7 +23,7 @@ public abstract class SimplePage extends BasePage {
@Override
protected void onInitialize() {
super.onInitialize();
add(new SpriteImage("logo", getLogoHref()));
add(newPageLogo("logo"));
add(new Label("title", new AbstractReadOnlyModel<String>() {
@Override
@ -54,8 +55,8 @@ public abstract class SimplePage extends BasePage {
@Nullable
protected abstract String getSubTitle();
protected String getLogoHref() {
return "logo";
protected Component newPageLogo(String componentId) {
return new BrandLogoPanel(componentId);
}
}

View File

@ -7,6 +7,7 @@ import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@ -19,6 +20,7 @@ import io.onedev.server.security.SecurityUtils;
import io.onedev.server.util.ExceptionUtils;
import io.onedev.server.web.component.MultilineLabel;
import io.onedev.server.web.component.link.ViewStateAwarePageLink;
import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.page.project.ProjectListPage;
import io.onedev.server.web.page.simple.SimplePage;
@ -102,8 +104,8 @@ public class GeneralErrorPage extends SimplePage {
}
@Override
protected String getLogoHref() {
return "sad-panda";
protected WebComponent newPageLogo(String componentId) {
return new SpriteImage(componentId, "sad-panda");
}
}

View File

@ -5,12 +5,14 @@ import java.io.Serializable;
import javax.servlet.http.HttpServletResponse;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.unbescape.html.HtmlEscape;
import io.onedev.server.util.usage.InUseException;
import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.page.simple.SimplePage;
@SuppressWarnings("serial")
@ -57,8 +59,8 @@ public class InUseErrorPage extends SimplePage {
}
@Override
protected String getLogoHref() {
return "sad-panda";
protected WebComponent newPageLogo(String componentId) {
return new SpriteImage(componentId, "sad-panda");
}
}

View File

@ -2,10 +2,12 @@ package io.onedev.server.web.page.simple.error;
import javax.servlet.http.HttpServletResponse;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.page.simple.SimplePage;
@SuppressWarnings("serial")
@ -22,8 +24,8 @@ public class MethodNotAllowedErrorPage extends SimplePage {
}
@Override
protected String getLogoHref() {
return "sad-panda";
protected WebComponent newPageLogo(String componentId) {
return new SpriteImage(componentId, "sad-panda");
}
@Override

View File

@ -2,10 +2,12 @@ package io.onedev.server.web.page.simple.error;
import javax.servlet.http.HttpServletResponse;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import io.onedev.server.web.component.svg.SpriteImage;
import io.onedev.server.web.page.simple.SimplePage;
@SuppressWarnings("serial")
@ -22,8 +24,8 @@ public class PageNotFoundErrorPage extends SimplePage {
}
@Override
protected String getLogoHref() {
return "sad-panda";
protected WebComponent newPageLogo(String componentId) {
return new SpriteImage(componentId, "sad-panda");
}
@Override

View File

@ -27,9 +27,11 @@
.force-ordinary-style .bean-editor {
text-align: left !important;
}
.SimplePage .main .logo.icon {
.SimplePage .main .brand-logo {
color: var(--primary);
margin-bottom: 3rem;
width: 100px;
height: 100px;
}
.SimplePage .main .title {
margin-bottom: 5rem;

View File

@ -2,15 +2,15 @@ package io.onedev.server.web.resource;
import org.apache.wicket.request.resource.PackageResourceReference;
public class SvgSpriteResourceReference extends PackageResourceReference {
public class SpriteResourceReference extends PackageResourceReference {
private static final long serialVersionUID = 1L;
public static final String DEFAULT_MOUNT_PATH = "icons.svg";
public static final String RESOURCE_NAME = "create-sprite-from-svg-files.svg";
public static final String RESOURCE_NAME = "create-sprite-from-files.svg";
public SvgSpriteResourceReference(Class<?> scope) {
public SpriteResourceReference(Class<?> scope) {
super(scope, RESOURCE_NAME);
}

View File

@ -33,7 +33,7 @@ import org.dom4j.io.XMLWriter;
import io.onedev.commons.utils.StringUtils;
public class SvgSpriteResourceStream implements IResourceStream {
public class SpriteResourceStream implements IResourceStream {
private static final long serialVersionUID = 1L;
@ -43,7 +43,7 @@ public class SvgSpriteResourceStream implements IResourceStream {
private static final Map<Class<?>, byte[]> contentCache = new ConcurrentHashMap<>();
public SvgSpriteResourceStream(Class<?> scope) {
public SpriteResourceStream(Class<?> scope) {
this.scope = scope;
}
@ -84,16 +84,6 @@ public class SvgSpriteResourceStream implements IResourceStream {
}
@Override
public String getContentType() {
return "image/svg+xml";
}
@Override
public Bytes length() {
return Bytes.bytes(getContent().length);
}
private byte[] getContent() {
byte[] content = contentCache.get(scope);
if (content == null) {
@ -180,6 +170,16 @@ public class SvgSpriteResourceStream implements IResourceStream {
return content;
}
@Override
public String getContentType() {
return "image/svg+xml";
}
@Override
public Bytes length() {
return Bytes.bytes(getContent().length);
}
@Override
public InputStream getInputStream() throws ResourceStreamNotFoundException {
return new ByteArrayInputStream(getContent());
@ -215,5 +215,5 @@ public class SvgSpriteResourceStream implements IResourceStream {
@Override
public void setVariation(String variation) {
}
}

View File

@ -75,20 +75,6 @@ public class RequestCycle implements IRequestCycle, IEventSink
{
private static final Logger log = LoggerFactory.getLogger(RequestCycle.class);
private static MetaDataKey<ConcurrentHashMap<ResourceUrlCacheKey, CharSequence>> resourceUrlCacheKey =
new MetaDataKey<ConcurrentHashMap<ResourceUrlCacheKey, CharSequence>>(){
private static final long serialVersionUID = 1L;
};
private static MetaDataKey<ConcurrentHashMap<PageUrlCacheKey, CharSequence>> pageUrlCacheKey =
new MetaDataKey<ConcurrentHashMap<PageUrlCacheKey, CharSequence>>(){
private static final long serialVersionUID = 1L;
};
private ConcurrentHashMap<ResourceUrlCacheKey, CharSequence> resourceUrlCache = new ConcurrentHashMap<>();
private ConcurrentHashMap<PageUrlCacheKey, CharSequence> pageUrlCache = new ConcurrentHashMap<>();
@ -515,18 +501,6 @@ public class RequestCycle implements IRequestCycle, IEventSink
*/
public final CharSequence urlFor(ResourceReference reference, PageParameters params)
{
ConcurrentHashMap<ResourceUrlCacheKey, CharSequence> resourceUrlCache;
Session session = ThreadContext.getSession();
if (session != null) {
resourceUrlCache = session.getMetaData(resourceUrlCacheKey);
if (resourceUrlCache == null) {
resourceUrlCache = new ConcurrentHashMap<>();
session.setMetaData(resourceUrlCacheKey, resourceUrlCache);
}
} else {
resourceUrlCache = this.resourceUrlCache;
}
ResourceUrlCacheKey key = new ResourceUrlCacheKey(reference, params);
CharSequence url = resourceUrlCache.get(key);
if (url == null) {
@ -554,18 +528,6 @@ public class RequestCycle implements IRequestCycle, IEventSink
public final <C extends Page> CharSequence urlFor(final Class<C> pageClass,
final PageParameters parameters)
{
ConcurrentHashMap<PageUrlCacheKey, CharSequence> pageUrlCache;
Session session = ThreadContext.getSession();
if (session != null) {
pageUrlCache = session.getMetaData(pageUrlCacheKey);
if (pageUrlCache == null) {
pageUrlCache = new ConcurrentHashMap<>();
session.setMetaData(pageUrlCacheKey, pageUrlCache);
}
} else {
pageUrlCache = this.pageUrlCache;
}
PageUrlCacheKey key = new PageUrlCacheKey(pageClass, parameters);
CharSequence url = pageUrlCache.get(key);
if (url == null) {

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-core</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<modules>
<module>server-plugin-archetype</module>
<module>server-plugin-executor-kubernetes</module>
<module>server-plugin-executor-serverdocker</module>
<module>server-plugin-buildspec-maven</module>
<module>server-plugin-buildspec-gradle</module>
<module>server-plugin-buildspec-node</module>
<module>server-plugin-authenticator-ldap</module>
<module>server-plugin-sso-openid</module>
<module>server-plugin-report-markdown</module>
<module>server-plugin-report-jest</module>
<module>server-plugin-report-clover</module>
<module>server-plugin-report-checkstyle</module>
<module>server-plugin-import-github</module>
<module>server-plugin-import-youtrack</module>
<module>server-plugin-import-gitlab</module>
<module>server-plugin-import-gitea</module>
<module>server-plugin-import-bitbucketcloud</module>
<module>server-plugin-import-jiracloud</module>
<module>server-plugin-executor-remotedocker</module>
<module>server-plugin-executor-servershell</module>
<module>server-plugin-executor-remoteshell</module>
<module>server-plugin-report-unittest</module>
<module>server-plugin-report-junit</module>
<module>server-plugin-report-coverage</module>
<module>server-plugin-report-jacoco</module>
<module>server-plugin-report-problem</module>
<module>server-plugin-report-spotbugs</module>
<module>server-plugin-report-pmd</module>
<module>server-plugin-report-cpd</module>
<module>server-plugin-sso-discord</module>
</modules>
</project>

View File

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-archetype</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>archetype-resources/pom.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>archetype-resources/pom.xml</exclude>
</excludes>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<escapeString>\</escapeString>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>install-archetype</id>
<phase>install</phase>
<goals>
<goal>update-local-catalog</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-authenticator-ldap</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.authenticator.ldap.LdapModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-buildspec-gradle</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.gradle.GradleModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-buildspec-maven</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.maven.MavenModule</moduleClass>
</properties>
</project>

View File

@ -1,14 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-buildspec-node</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.node.NodePluginModule</moduleClass>
</properties>
</project>

View File

@ -1,14 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-executor-kubernetes</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.executor.kubernetes.KubernetesModule</moduleClass>
</properties>
</project>

View File

@ -1,25 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-executor-remotedocker</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-serverdocker</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-kubernetes</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.executor.remotedocker.RemoteDockerModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-executor-remoteshell</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-servershell</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.executor.remoteshell.RemoteShellModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-executor-serverdocker</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.executor.serverdocker.ServerDockerModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-executor-servershell</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.executor.servershell.ServerShellModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-bitbucketcloud</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.bitbucketcloud.BitbucketPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-gitea</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.gitea.GiteaPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-github</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.github.GitHubPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-gitlab</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.gitlab.GitLabPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-jiracloud</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.jiracloud.JiraPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-import-youtrack</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.youtrack.YouTrackPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-checkstyle</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-problem</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.checkstyle.CheckstylePluginModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-clover</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-coverage</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.clover.CloverPluginModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-coverage</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.coverage.CoverageReportModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-cpd</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-problem</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.cpd.CPDReportModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-jacoco</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-coverage</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.jacoco.JacocoReportModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-jest</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-unittest</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.jest.JestReportModule</moduleClass>
</properties>
</project>

View File

@ -1,26 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-junit</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-unittest</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>commons-loader</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.junit.JUnitReportModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-markdown</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.markdown.MarkdownReportModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-pmd</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-problem</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.pmd.PMDReportModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-problem</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.problem.ProblemReportModule</moduleClass>
</properties>
</project>

View File

@ -1,20 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-spotbugs</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-problem</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.report.spotbugs.SpotBugsReportModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-report-unittest</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.unittest.UnitTestReportModule</moduleClass>
</properties>
</project>

View File

@ -1,13 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-sso-discord</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.sso.discord.DiscordModule</moduleClass>
</properties>
</project>

View File

@ -1,27 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-plugin-sso-openid</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>oauth2-oidc-sdk</artifactId>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<properties>
<moduleClass>io.onedev.server.plugin.sso.openid.OpenIdModule</moduleClass>
<okta-jwt.version>0.4.0</okta-jwt.version>
</properties>
</project>

View File

@ -1,167 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>server-product</artifactId>
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>7.1.7</version>
</parent>
<dependencies>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-jest</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-junit</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-clover</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-jacoco</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-buildspec-maven</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-buildspec-node</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-buildspec-gradle</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-kubernetes</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-serverdocker</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-servershell</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-remotedocker</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-executor-remoteshell</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-authenticator-ldap</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-sso-openid</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-markdown</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-checkstyle</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-pmd</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-cpd</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-report-spotbugs</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-github</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-gitlab</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-gitea</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-youtrack</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-jiracloud</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-import-bitbucketcloud</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.onedev</groupId>
<artifactId>server-plugin-sso-discord</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Add explicit dependencies to make sure standalone plugins use expected lib version -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
<properties>
<executables>bin/*.sh, boot/wrapper-*</executables>
<moduleClass>io.onedev.server.product.ProductModule</moduleClass>
</properties>
</project>