提交 ba66c919 编写于 作者: MaxKey单点登录官方's avatar MaxKey单点登录官方

gradle build

gradle build
上级 c07aea57
......@@ -124,6 +124,7 @@ subprojects {
mavenCentral()
jcenter()
maven { url "https://maven.eveoh.nl/content/repositories/releases" }
maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases"}
maven { url "https://plugins.gradle.org/m2/" }
maven { url "http://repo.spring.io/plugins-release" }
maven { url "https://repo.spring.io/milestone" }
......@@ -319,7 +320,8 @@ subprojects {
}
}
/* task checkenv<<{
task checkenv{
println 'check env for project '
//项目名
println project.name
//项目相对路径
......@@ -329,16 +331,18 @@ subprojects {
//项目的绝对路径
println project.projectDir
//项目的build文件绝对路径
println project.buildDir
println "buildDir " +project.buildDir
//项目所在的group
println project.group
//项目的版本号
println project.version
//项目的ant对象
println project.ant
}*/
}
task copyjar2Release(type: Copy) {
println "$buildDir/libs/ to $rootDir/build/jars/"
into "$rootDir/build/jars/"
from "$buildDir/libs/"
include '*.jar'
......@@ -361,10 +365,9 @@ subprojects {
from "$buildDir/libs/"
}
//task buildRelease(dependsOn:['build','war','copyjar2Release','copyWar2Release','copyotherWar2Release','copydemoWar2Release']) << {
//task buildRelease(dependsOn:['copyjar2Release','copyWar2Release','copyotherWar2Release','copydemoWar2Release']) << {
// println 'Build MaxKey '+project.name +' complete .'
//}
task buildRelease(dependsOn:['build','jar','copyjar2Release']) {
println 'Build MaxKey '+project.name +' complete .'
}
}
......
......@@ -14,7 +14,6 @@ call %GRADLE_HOME%/bin/gradle war
call %GRADLE_HOME%/bin/gradle buildRelease
call %GRADLE_HOME%/bin/gradle buildReleaseGear
cd build
rd /q /s libs
......
......@@ -6,8 +6,8 @@ import org.maxkey.util.PathUtils;
public class PathUtilsTest {
@Test
public void test() {
System.out.println(PathUtils.getInstance().getAppPath());
System.out.println(PathUtils.getInstance().getWebInf());
System.out.println(PathUtils.getInstance().getClassPath());
//System.out.println(PathUtils.getInstance().getAppPath());
//System.out.println(PathUtils.getInstance().getWebInf());
//System.out.println(PathUtils.getInstance().getClassPath());
}
}
......@@ -25,7 +25,7 @@ public class FormBasedDetailsServiceTest {
public static AppsFormBasedDetailsService service;
public AppsFormBasedDetailsService getservice() {
service=(AppsFormBasedDetailsService)WebContext.getBean("formBasedDetailsService");
service=(AppsFormBasedDetailsService)WebContext.getBean("appsFormBasedDetailsService");
return service;
}
......
......@@ -10,7 +10,7 @@ dependencies {
compile project(":maxkey-dao")
compile project(":maxkey-jose-jwt")
compile project(":maxkey-client-sdk")
compile project(":maxkey-protocols:maxkey-protocol-oauth-2.0")
compile project(":maxkey-protocols:maxkey-protocol-saml-2.0")
//compileOnly project(":maxkey-protocols:maxkey-protocol-oauth-2.0")
//compileOnly project(":maxkey-protocols:maxkey-protocol-saml-2.0")
}
\ No newline at end of file
......@@ -5,16 +5,13 @@ package org.maxkey.authz.endpoint;
import javax.servlet.http.HttpServletRequest;
import org.maxkey.authz.oauth2.provider.ClientDetailsService;
import org.maxkey.client.utils.HttpEncoder;
import org.maxkey.constants.PROTOCOLS;
import org.maxkey.dao.service.AppsCasDetailsService;
import org.maxkey.domain.apps.Apps;
import org.maxkey.domain.apps.oauth2.provider.ClientDetails;
import org.maxkey.web.WebConstants;
import org.maxkey.web.WebContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -26,12 +23,6 @@ import org.springframework.web.servlet.ModelAndView;
*/
@Controller
public class AuthorizeEndpoint extends AuthorizeBaseEndpoint{
private static final String OAUTH_V20_AUTHORIZATION_URL = "%s/oauth/v20/authorize?client_id=%s&response_type=code&redirect_uri=%s&approval_prompt=auto";
@Autowired
@Qualifier("oauth20JdbcClientDetailsService")
private ClientDetailsService clientDetailsService;
@Autowired
AppsCasDetailsService casDetailsService;
......@@ -51,23 +42,13 @@ public class AuthorizeEndpoint extends AuthorizeBaseEndpoint{
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.FORMBASED)){
modelAndView=WebContext.forward("/authz/formbased/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.OAUTH20)){
ClientDetails clientDetails =clientDetailsService.loadClientByClientId(application.getId());
_logger.debug(""+clientDetails);
String authorizationUrl = String.format(OAUTH_V20_AUTHORIZATION_URL,
applicationConfig.getServerPrefix(),
clientDetails.getClientId(),
HttpEncoder.encode(clientDetails.getRegisteredRedirectUri().toArray()[0].toString())
);
_logger.debug("authorizationUrl "+authorizationUrl);
modelAndView=WebContext.redirect(authorizationUrl);
modelAndView=WebContext.forward("/authz/oauthv20/"+application.getId());
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.OPEN_ID_CONNECT)){
// modelAndView=new ModelAndView("openid connect");
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.SAML20)){
modelAndView=WebContext.forward("/authz/saml20/idpinit/"+application.getId());
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.TOKENBASED)){
modelAndView=WebContext.forward("/authorize/tokenbased/"+id);
modelAndView=WebContext.forward("/authz/tokenbased/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.CAS)){
modelAndView=WebContext.forward("/authz/cas/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.DESKTOP)){
......
body {
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 12pt;
}
body, a, a:visited {
color: #303030;
}
#content {
padding-left: 50px;
padding-right: 50px;
padding-top: 30px;
padding-bottom: 30px;
}
#content h1 {
font-size: 160%;
margin-bottom: 10px;
}
#footer {
margin-top: 100px;
font-size: 80%;
white-space: nowrap;
}
#footer, #footer a {
color: #a0a0a0;
}
#line-wrapping-toggle {
vertical-align: middle;
}
#label-for-line-wrapping-toggle {
vertical-align: middle;
}
ul {
margin-left: 0;
}
h1, h2, h3 {
white-space: nowrap;
}
h2 {
font-size: 120%;
}
ul.tabLinks {
padding-left: 0;
padding-top: 10px;
padding-bottom: 10px;
overflow: auto;
min-width: 800px;
width: auto !important;
width: 800px;
}
ul.tabLinks li {
float: left;
height: 100%;
list-style: none;
padding-left: 10px;
padding-right: 10px;
padding-top: 5px;
padding-bottom: 5px;
margin-bottom: 0;
-moz-border-radius: 7px;
border-radius: 7px;
margin-right: 25px;
border: solid 1px #d4d4d4;
background-color: #f0f0f0;
}
ul.tabLinks li:hover {
background-color: #fafafa;
}
ul.tabLinks li.selected {
background-color: #c5f0f5;
border-color: #c5f0f5;
}
ul.tabLinks a {
font-size: 120%;
display: block;
outline: none;
text-decoration: none;
margin: 0;
padding: 0;
}
ul.tabLinks li h2 {
margin: 0;
padding: 0;
}
div.tab {
}
div.selected {
display: block;
}
div.deselected {
display: none;
}
div.tab table {
min-width: 350px;
width: auto !important;
width: 350px;
border-collapse: collapse;
}
div.tab th, div.tab table {
border-bottom: solid #d0d0d0 1px;
}
div.tab th {
text-align: left;
white-space: nowrap;
padding-left: 6em;
}
div.tab th:first-child {
padding-left: 0;
}
div.tab td {
white-space: nowrap;
padding-left: 6em;
padding-top: 5px;
padding-bottom: 5px;
}
div.tab td:first-child {
padding-left: 0;
}
div.tab td.numeric, div.tab th.numeric {
text-align: right;
}
span.code {
display: inline-block;
margin-top: 0em;
margin-bottom: 1em;
}
span.code pre {
font-size: 11pt;
padding-top: 10px;
padding-bottom: 10px;
padding-left: 10px;
padding-right: 10px;
margin: 0;
background-color: #f7f7f7;
border: solid 1px #d0d0d0;
min-width: 700px;
width: auto !important;
width: 700px;
}
span.wrapped pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: break-all;
}
label.hidden {
display: none;
}
\ No newline at end of file
#summary {
margin-top: 30px;
margin-bottom: 40px;
}
#summary table {
border-collapse: collapse;
}
#summary td {
vertical-align: top;
}
.breadcrumbs, .breadcrumbs a {
color: #606060;
}
.infoBox {
width: 110px;
padding-top: 15px;
padding-bottom: 15px;
text-align: center;
}
.infoBox p {
margin: 0;
}
.counter, .percent {
font-size: 120%;
font-weight: bold;
margin-bottom: 8px;
}
#duration {
width: 125px;
}
#successRate, .summaryGroup {
border: solid 2px #d0d0d0;
-moz-border-radius: 10px;
border-radius: 10px;
}
#successRate {
width: 140px;
margin-left: 35px;
}
#successRate .percent {
font-size: 180%;
}
.success, .success a {
color: #008000;
}
div.success, #successRate.success {
background-color: #bbd9bb;
border-color: #008000;
}
.failures, .failures a {
color: #b60808;
}
.skipped, .skipped a {
color: #c09853;
}
div.failures, #successRate.failures {
background-color: #ecdada;
border-color: #b60808;
}
ul.linkList {
padding-left: 0;
}
ul.linkList li {
list-style: none;
margin-bottom: 5px;
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Test Summary</title>
<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<script src="js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Test Summary</h1>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">0</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">-</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">-</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thead>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thead>
<tbody/>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 5.4.1</a> at 2019-11-10 12:36:07</p>
</div>
</div>
</body>
</html>
(function (window, document) {
"use strict";
var tabs = {};
function changeElementClass(element, classValue) {
if (element.getAttribute("className")) {
element.setAttribute("className", classValue);
} else {
element.setAttribute("class", classValue);
}
}
function getClassAttribute(element) {
if (element.getAttribute("className")) {
return element.getAttribute("className");
} else {
return element.getAttribute("class");
}
}
function addClass(element, classValue) {
changeElementClass(element, getClassAttribute(element) + " " + classValue);
}
function removeClass(element, classValue) {
changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
}
function initTabs() {
var container = document.getElementById("tabs");
tabs.tabs = findTabs(container);
tabs.titles = findTitles(tabs.tabs);
tabs.headers = findHeaders(container);
tabs.select = select;
tabs.deselectAll = deselectAll;
tabs.select(0);
return true;
}
function getCheckBox() {
return document.getElementById("line-wrapping-toggle");
}
function getLabelForCheckBox() {
return document.getElementById("label-for-line-wrapping-toggle");
}
function findCodeBlocks() {
var spans = document.getElementById("tabs").getElementsByTagName("span");
var codeBlocks = [];
for (var i = 0; i < spans.length; ++i) {
if (spans[i].className.indexOf("code") >= 0) {
codeBlocks.push(spans[i]);
}
}
return codeBlocks;
}
function forAllCodeBlocks(operation) {
var codeBlocks = findCodeBlocks();
for (var i = 0; i < codeBlocks.length; ++i) {
operation(codeBlocks[i], "wrapped");
}
}
function toggleLineWrapping() {
var checkBox = getCheckBox();
if (checkBox.checked) {
forAllCodeBlocks(addClass);
} else {
forAllCodeBlocks(removeClass);
}
}
function initControls() {
if (findCodeBlocks().length > 0) {
var checkBox = getCheckBox();
var label = getLabelForCheckBox();
checkBox.onclick = toggleLineWrapping;
checkBox.checked = false;
removeClass(label, "hidden");
}
}
function switchTab() {
var id = this.id.substr(1);
for (var i = 0; i < tabs.tabs.length; i++) {
if (tabs.tabs[i].id === id) {
tabs.select(i);
break;
}
}
return false;
}
function select(i) {
this.deselectAll();
changeElementClass(this.tabs[i], "tab selected");
changeElementClass(this.headers[i], "selected");
while (this.headers[i].firstChild) {
this.headers[i].removeChild(this.headers[i].firstChild);
}
var h2 = document.createElement("H2");
h2.appendChild(document.createTextNode(this.titles[i]));
this.headers[i].appendChild(h2);
}
function deselectAll() {
for (var i = 0; i < this.tabs.length; i++) {
changeElementClass(this.tabs[i], "tab deselected");
changeElementClass(this.headers[i], "deselected");
while (this.headers[i].firstChild) {
this.headers[i].removeChild(this.headers[i].firstChild);
}
var a = document.createElement("A");
a.setAttribute("id", "ltab" + i);
a.setAttribute("href", "#tab" + i);
a.onclick = switchTab;
a.appendChild(document.createTextNode(this.titles[i]));
this.headers[i].appendChild(a);
}
}
function findTabs(container) {
return findChildElements(container, "DIV", "tab");
}
function findHeaders(container) {
var owner = findChildElements(container, "UL", "tabLinks");
return findChildElements(owner[0], "LI", null);
}
function findTitles(tabs) {
var titles = [];
for (var i = 0; i < tabs.length; i++) {
var tab = tabs[i];
var header = findChildElements(tab, "H2", null)[0];
header.parentNode.removeChild(header);
if (header.innerText) {
titles.push(header.innerText);
} else {
titles.push(header.textContent);
}
}
return titles;
}
function findChildElements(container, name, targetClass) {
var elements = [];
var children = container.childNodes;
for (var i = 0; i < children.length; i++) {
var child = children.item(i);
if (child.nodeType === 1 && child.nodeName === name) {
if (targetClass && child.className.indexOf(targetClass) < 0) {
continue;
}
elements.push(child);
}
}
return elements;
}
// Entry point.
window.onload = function() {
initTabs();
initControls();
};
} (window, window.document));
\ No newline at end of file
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-cas
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.160+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-desktop
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.172+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-extendapi
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.185+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-formbased
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.194+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
......@@ -7,6 +7,7 @@ dependencies {
compile project(":maxkey-core")
compile project(":maxkey-dao")
compile project(":maxkey-jose-jwt")
compile project(":maxkey-client-sdk")
compile project(":maxkey-protocols:maxkey-protocol-authorize")
}
\ No newline at end of file
http\://www.springframework.org/schema/security/oauth2=org.springframework.security.oauth2.config.xml.OAuth2SecurityNamespaceHandler
http\://www.springframework.org/schema/security/oauth=org.springframework.security.oauth.config.OAuthSecurityNamespaceHandler
http\://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd=org/springframework/security/oauth2/spring-security-oauth2-1.0.xsd
http\://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd=org/springframework/security/oauth2/spring-security-oauth2-2.0.xsd
http\://www.springframework.org/schema/security/spring-security-oauth2.xsd=org/springframework/security/oauth2/spring-security-oauth2-2.0.xsd
http\://www.springframework.org/schema/security/spring-security-oauth-1.0.xsd=org/springframework/security/oauth/spring-security-oauth-1.0.xsd
http\://www.springframework.org/schema/security/spring-security-oauth.xsd=org/springframework/security/oauth/spring-security-oauth-1.0.xsd
\ No newline at end of file
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-oauth-2.0
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.204+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
......@@ -21,6 +21,10 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
import org.maxkey.authz.oauth2.common.OAuth2AccessToken;
import org.maxkey.authz.oauth2.common.exceptions.InvalidClientException;
import org.maxkey.authz.oauth2.common.exceptions.InvalidRequestException;
......@@ -41,13 +45,20 @@ import org.maxkey.authz.oauth2.provider.code.AuthorizationCodeServices;
import org.maxkey.authz.oauth2.provider.code.InMemoryAuthorizationCodeServices;
import org.maxkey.authz.oauth2.provider.implicit.ImplicitTokenRequest;
import org.maxkey.authz.oauth2.provider.request.DefaultOAuth2RequestValidator;
import org.maxkey.client.utils.HttpEncoder;
import org.maxkey.config.ApplicationConfig;
import org.maxkey.domain.apps.oauth2.provider.ClientDetails;
import org.maxkey.web.WebContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.authentication.InsufficientAuthenticationException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -61,6 +72,7 @@ import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriTemplate;
import org.maxkey.authz.oauth2.provider.ClientDetailsService;
/**
* <p>
......@@ -82,9 +94,18 @@ import org.springframework.web.util.UriTemplate;
@Controller
@SessionAttributes("authorizationRequest")
public class AuthorizationEndpoint extends AbstractEndpoint {
final static Logger _logger = LoggerFactory.getLogger(AuthorizationEndpoint.class);
private static final String OAUTH_V20_AUTHORIZATION_URL = "%s/oauth/v20/authorize?client_id=%s&response_type=code&redirect_uri=%s&approval_prompt=auto";
@Autowired
@Qualifier("oauth20JdbcClientDetailsService")
private ClientDetailsService clientDetailsService;
@Autowired
@Qualifier("applicationConfig")
protected ApplicationConfig applicationConfig;
private RedirectResolver redirectResolver = new DefaultRedirectResolver();
private UserApprovalHandler userApprovalHandler = new DefaultUserApprovalHandler();
......@@ -488,5 +509,21 @@ public class AuthorizationEndpoint extends AbstractEndpoint {
this.oauth2RequestValidator = oauth2RequestValidator;
}
@RequestMapping("/authz/oauthv20/{id}")
public ModelAndView authorize(
HttpServletRequest request,
HttpServletResponse response,
@PathVariable("id") String id){
ClientDetails clientDetails =clientDetailsService.loadClientByClientId(id);
_logger.debug(""+clientDetails);
String authorizationUrl = String.format(OAUTH_V20_AUTHORIZATION_URL,
applicationConfig.getServerPrefix(),
clientDetails.getClientId(),
HttpEncoder.encode(clientDetails.getRegisteredRedirectUri().toArray()[0].toString())
);
_logger.debug("authorizationUrl "+authorizationUrl);
return WebContext.redirect(authorizationUrl);
}
}
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-saml-2.0
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.214+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
Manifest-Version: 1.0
Implementation-Title: maxkey-protocol-tokenbased
Implementation-Version: 1.0.0.RELEASE
Implementation-Date: 2019-11-10T12:35:40.220+08:00[Asia/Shanghai]
Created-By: org.maxkey
Implementation-Vendor: https://github.com/shimingxy/MaxKey
......@@ -41,7 +41,7 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
@Autowired
ApplicationConfig applicationConfig;
@RequestMapping("/authorize/tokenbased/{id}")
@RequestMapping("/authz/tokenbased/{id}")
public ModelAndView authorize(
HttpServletRequest request,
HttpServletResponse response,
......
......@@ -13,10 +13,9 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin/default"/>
......
......@@ -2,25 +2,24 @@
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="maxkey-web-manage">
<property name="context-root" value="maxkey-mgt"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-core/maxkey-core">
<wb-resource deploy-path="/" source-path="src/main/resources"/>
<wb-resource deploy-path="/" source-path="src/main/java"/>
<dependent-module deploy-path="../" handle="module:/resource/maxkey-core/maxkey-core">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-jose-jwt/maxkey-jose-jwt">
<dependent-module deploy-path="../" handle="module:/resource/maxkey-jose-jwt/maxkey-jose-jwt">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-dao/maxkey-dao">
<dependent-module deploy-path="../" handle="module:/resource/maxkey-dao/maxkey-dao">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-client-sdk/maxkey-client-sdk">
<dependent-module deploy-path="../" handle="module:/resource/maxkey-client-sdk/maxkey-client-sdk">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-protocol-oauth-2.0/maxkey-protocol-oauth-2.0">
<dependent-module deploy-path="../" handle="module:/resource/maxkey-protocol-oauth-2.0/maxkey-protocol-oauth-2.0">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/maxkey-protocol-saml-2.0/maxkey-protocol-saml-2.0">
<dependent-module deploy-path="../" handle="module:/resource/maxkey-protocol-saml-2.0/maxkey-protocol-saml-2.0">
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module>
......
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="jst.java"/>
<fixed facet="jst.web"/>
<installed facet="jst.web" version="2.4"/>
<installed facet="jst.utility" version="1.0"/>
<installed facet="jst.java" version="1.8"/>
</faceted-project>
description = "maxkey-web-manage"
apply plugin: 'war'
//apply plugin: 'war'
apply plugin: 'eclipse-wtp'
dependencies {
......
......@@ -3,7 +3,7 @@ description = "maxkey-web-maxkey"
// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'war'
//apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply plugin: 'com.bmuschko.tomcat-base'
apply plugin: 'com.bmuschko.tomcat'
......
echo off
echo set env
set JAVA_HOME=D:\javaIDE\jdk1.8.0_31
set GRADLE_HOME=D:\javaIDE\gradle-4.8
set JAVA_HOME=D:\JavaIDE\jdk1.8.0_91
set GRADLE_HOME=D:\JavaIDE\gradle-5.4.1
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册