当前位置: 首页 > 编程日记 > 正文

Saiku二次开发获取源代码在本地编译(五)

关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务

Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml,以及其它调整。

当前提供的saiku版本为 3.9

一、Saiku源码下载

下载saiku源码地址:  https://github.com/DFX339/saiku-3.9.git     #这是我改好在本地编译通过的saiku源码

二、Saiku相关jar包下载

在本地编译时需要注意有些jar包可能从仓库中获取不到,需要手动将缺失的jar包copy到本地maven仓库对应下载不下来jar包的目录下

这里将一些比较难找的jar包上传到了github上

saiku的jar包 github 地址:  https://github.com/DFX339/saiku-repository.git

获取其他下载不下来jar的方式:
  1. 下载最新版本的saiku-server ,从saiku-server\tomcat\webapps\saiku\WEB-INF\lib 目录下对应的jar包,copy到本地maven仓库目录
2. 从 https://nexus.pentaho.org/#browse/search 中搜索jar包,下载下来然后copy到本地maven仓库目录

maven的配置文件:

本机存放目录: D:\Program Files\apache-maven-3.5.3\conf\settings - saiku.xml

setting-saiku.xml 文件内容:

<?xml version="1.0" encoding="UTF-8"?><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
--><!--| This is the configuration file for Maven. It can be specified at two levels:||  1. User Level. This settings.xml file provides configuration for a single user,|                 and is normally provided in ${user.home}/.m2/settings.xml.||                 NOTE: This location can be overridden with the CLI option:||                 -s /path/to/user/settings.xml||  2. Global Level. This settings.xml file provides configuration for all Maven|                 users on a machine (assuming they're all using the same Maven|                 installation). It's normally provided in|                 ${maven.home}/conf/settings.xml.||                 NOTE: This location can be overridden with the CLI option:||                 -gs /path/to/global/settings.xml|| The sections in this sample file are intended to give you a running start at| getting the most out of your Maven installation. Where appropriate, the default| values (values used when the setting is not specified) are provided.||-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository--><localRepository>D:\app\maven\saiku-repository</localRepository><!-- interactiveMode| This will determine whether maven prompts you when it needs input. If set to false,| maven will use a sensible default value, perhaps based on some other setting, for| the parameter in question.|| Default: true<interactiveMode>true</interactiveMode>--><!-- offline| Determines whether maven should attempt to connect to the network when executing a build.| This will have an effect on artifact downloads, artifact deployment, and others.|| Default: false<offline>false</offline>--><!-- pluginGroups| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.|--><pluginGroups><!-- pluginGroup| Specifies a further group identifier to use for plugin lookup.<pluginGroup>com.your.plugins</pluginGroup>--><pluginGroup>org.mortbay.jetty</pluginGroup><pluginGroup>org.jenkins-ci.tools</pluginGroup></pluginGroups><!-- proxies| This is a list of proxies which can be used on this machine to connect to the network.| Unless otherwise specified (by system property or command-line switch), the first proxy| specification in this list marked as active will be used.|--><proxies><!-- proxy| Specification for one proxy, to be used in connecting to the network.|<proxy><id>optional</id><active>true</active><protocol>http</protocol><username>proxyuser</username><password>proxypass</password><host>proxy.host.net</host><port>80</port><nonProxyHosts>local.net|some.host.com</nonProxyHosts></proxy>--></proxies><!-- servers| This is a list of authentication profiles, keyed by the server-id used within the system.| Authentication profiles can be used whenever maven must make a connection to a remote server.|--><servers><!-- server| Specifies the authentication information to use when connecting to a particular server, identified by| a unique name within the system (referred to by the 'id' attribute below).|| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are|       used together.|--><server><id>onelife-snapshorts</id><username>deployment</username><password>Abcd1234</password></server><!-- Another sample, using keys to authenticate.<server><id>siteServer</id><privateKey>/path/to/private/key</privateKey><passphrase>optional; leave empty if not used.</passphrase></server>--></servers><!-- mirrors| This is a list of mirrors to be used in downloading artifacts from remote repositories.|| It works like this: a POM may declare a repository to use in resolving certain artifacts.| However, this repository may have problems with heavy traffic at times, so people have mirrored| it to several places.|| That repository definition will have a unique id, so we can create a mirror reference for that| repository, to be used as an alternate download site. The mirror site will be the preferred| server for that repository.|--><mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|<mirror><id>onelife-mirrorId</id><mirrorOf>onelife-public-repositories,central</mirrorOf><name>onelife Name for this Mirror.</name><url>http://10.6.0.118:8080/nexus/content/groups/onelife-public-repositories/</url></mirror>--><mirror><id>nexus-aliyun</id><mirrorOf>*,!jeecg,!jeecg-snapshots, !pentaho</mirrorOf>  <name>Nexus aliyun</name><url>https://maven.aliyun.com/repository/public</url></mirror></mirrors><!-- profiles| This is a list of profiles which can be activated in a variety of ways, and which can modify| the build process. Profiles provided in the settings.xml are intended to provide local machine-| specific paths and repository locations which allow the build to work in the local environment.|| For example, if you have an integration testing plugin - like cactus - that needs to know where| your Tomcat instance is installed, you can provide a variable here such that the variable is| dereferenced during the build process to configure the cactus plugin.|| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles| section of this document (settings.xml) - will be discussed later. Another way essentially| relies on the detection of a system property, either matching a particular value for the property,| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.| Finally, the list of active profiles can be specified directly from the command line.|| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact|       repositories, plugin repositories, and free-form properties to be used as configuration|       variables for plugins in the POM.||--><profiles><!-- profile| Specifies a set of introductions to the build process, to be activated using one or more of the| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>| or the command line, profiles have to have an ID that is unique.|| An encouraged best practice for profile identification is to use a consistent naming convention| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.| This will make it more intuitive to understand what the set of introduced profiles is attempting| to accomplish, particularly when you only have a list of profile id's for debug.|| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.<profile><id>jdk-1.4</id><activation><jdk>1.4</jdk></activation><repositories><repository><id>jdk14</id><name>Repository for JDK 1.4 builds</name><url>http://www.myhost.com/maven/jdk14</url><layout>default</layout><snapshotPolicy>always</snapshotPolicy></repository></repositories></profile>--><!--| Here is another profile, activated by the system property 'target-env' with a value of 'dev',| which provides a specific path to the Tomcat instance. To use this, your plugin configuration| might hypothetically look like:|| ...| <plugin>|   <groupId>org.myco.myplugins</groupId>|   <artifactId>myplugin</artifactId>||   <configuration>|     <tomcatLocation>${tomcatPath}</tomcatLocation>|   </configuration>| </plugin>| ...|| NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to|       anything, you could just leave off the <value/> inside the activation-property.|<profile><id>env-dev</id><activation><property><name>target-env</name><value>dev</value></property></activation><properties><tomcatPath>/path/to/tomcat/instance</tomcatPath></properties></profile>--><profile><id>saiku-profile</id><activation><activeByDefault>false</activeByDefault><jdk>1.8</jdk></activation><repositories><repository><id>Analytical Labs Repo</id><name>Analytical Labs Repo-releases</name><url>http://repo.meteorite.bi/content/repositories/alabs-release-local/</url></repository><repository><id>Analytical Labs snapshots</id><name>Analytical Labs Repo-releases</name><url>http://repo.meteorite.bi/content/repositories/alabs-snapshot-local/</url></repository><repository><id>pentaho-third-party</id><url>http://nexus.pentaho.org/content/repositories/proxied-3rd-party-releases/</url></repository><repository><id>pentaho-public-release</id><url>http://nexus.pentaho.org/content/repositories/pentaho-public-release-repos/</url></repository><repository><id>pentaho-snapshot</id><url>http://nexus.pentaho.org/content/repositories/public-snapshots/</url></repository>    <repository><id>central</id><name>Maven Repository Switchboard</name><layout>default</layout><url>https://maven.aliyun.com/repository/public</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>apache</id><name>Apache repo</name><layout>default</layout><url>https://repository.apache.org/content/repositories/snapshots/</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>nuxeo</id><url>https://maven-us.nuxeo.org/nexus/content/repositories/public-snapshot/</url></repository><repository><id>nuxeo_thirdparty</id><url>https://maven-us.nuxeo.org/nexus/content/repositories/thirdparty-snapshots/</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>jboss</id><url>http://repository.jboss.org/nexus/content/groups/public/</url></repository><repository><id>atlassian</id><name>Atlassian Public</name><layout>default</layout><url>https://maven.atlassian.com/content/repositories/atlassian-public</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>ApacheSnapshot</id><name>Apache Repository</name><url>https://repository.apache.org/content/groups/snapshots/</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>osc</id><url>https://maven.aliyun.com/repository/public/</url></repository><repository><id>osc_thirdparty</id><url>https://maven.aliyun.com/repository/public/</url></repository></repositories><pluginRepositories><pluginRepository><id>Analytical Labs Plugin Repo</id><name>Analytical Labs Repo-releases</name><url>http://repo.meteorite.bi/content/repositories/alabs-release-local/</url></pluginRepository><pluginRepository><id>osc_plugin</id><url>https://maven.aliyun.com/repository/public/</url></pluginRepository></pluginRepositories></profile>    </profiles><activeProfiles><!--		<activeProfile>onelife-profile</activeProfile> --><activeProfile>saiku-profile</activeProfile></activeProfiles><!-- activeProfiles| List of profiles that are active for all builds.|<activeProfiles><activeProfile>alwaysActiveProfile</activeProfile><activeProfile>anotherAlwaysActiveProfile</activeProfile></activeProfiles>-->
</settings>

三、Saiku本地编译

1. 下载saiku源码

2. 将缺失的jar包引入 (下载相关jar包手动复制到maven仓库对应jar存放目录中,然后再Eclipse上更新maven:   maven --》 update project  记得勾选offline )

3. 先执行maven命令:

1. mvn clean install 编译 saiku-olap-util ,

  2. mvn clean install 编译 saiku-core,

  3. 再在父pom上编译整个项目 mvn  clean install

 四、使用本地编译好的Saiku服务

编译通过后,在Saiku-server 项目下,会生成target目录信息,saiku服务就在 saiku-release-3.90\saiku-server\target\dist\saiku-server 目录下

按照之前的安装saiku的方法,直接双击start-saiku.bat 即可在windows上启动本地编译的saiku.

后续步骤就是上传license信息等使用saiku的相关步骤了,详情请参考关于Saiku的下载与安装博客一: https://www.cnblogs.com/DFX339/p/10253186.html

Problem:

1、 如果出现问题: Plugin Execution not covered by lifecycle configuration

Maven项目POM文件错误,提示“Plugin execution not covered by lifecycle configuration”的解决方案

请参考博客:https://www.cnblogs.com/AmilyLin/p/amilyLin.html

转载于:https://www.cnblogs.com/DFX339/p/10405721.html

相关文章:

As3.0 一些好书连接

优秀RIA书籍教程推荐与交流平台 http://www.riabook.cn/ 这里有很多不错的书。希望你们有帮助 转载于:https://www.cnblogs.com/guoyiqi/archive/2008/12/19/2069462.html

spark编程基础--5.1RDD编程基础

RDD创建 1.从文件系统中加载数据创建RDD 2.从分布式文件系统HDFS中加载数据 3.通过并行集合&#xff08;数组&#xff09;创建RDD RDD操作 1.转换操作 filter(func) map(func) flatmap(func) groupByKey() reduceByKey(func) 2.行动操作 3.惰性机制 所谓的“惰性机制”是指&…

JMeter的安装和使用

开始学习JMeter&#xff0c;网上资源虽多&#xff0c;不如自己总结的更有意义。 1. JMeter 的安装&#xff1a; 首先要安装java&#xff0c;这个直接去官网下载安装然后添加环境变量即可https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/ &#xff0c;下载JMeter…

C# 3.0 —— 扩展方法

扩展方法是C# 3.0新加入的特性&#xff0c;允许我们在不改变源代码的情况下扩展&#xff08;即填加&#xff09;现有类型中的实例方法&#xff0c;也给我们提供了另外一种扩展类型行为的方法(其它的方法为继承、组合、反射)。 下面我们来看一个代码示例&#xff1a; classProgr…

Melkman's Algorithm

http://cgm.cs.mcgill.ca/~athens/cs601/Melkman.html https://maxgoldste.in/melkman/ 转载于:https://www.cnblogs.com/noryes/p/10406873.html

HDU1051Wooden Sticks

Wooden Sticks http://acm.hdu.edu.cn/showproblem.php?pid1051 #include<stdio.h> struct stick{ int w ; int l; int flag;}wood[5000],temp,r[]; int n ; //排序// int partition(struct stick r[],int first,int end){ int ifirst,jend; while(i<j){ while(i<…

spark编程基础--5.2键值对RDD

键值对RDD的创建 常用的键值对转换操作 reduceByKey(func) groupByKey() keys values sortByKey() mapValues(func) join combineByKey reduceByKey(func) reduceByKey(func)的功能是&#xff0c;使用func函数合并具有相同键的值 groupByKey() 上面得到的wordCountsWithReduce…

禁止选中文本事件

由于经常会些写错&#xff0c;为了以后节约时间&#xff0c;记录下&#xff1a; obj.on(click,.arrow,function(ev){console.log(click);ev.stopPropagation();ev.preventDefault();var rel $(this).attr(rel);if( rel && rel < totalPage && rel>0 ){g…

一套外企的数据库设计面试题

最近发现园子里面关于数据库方面的文章比较多&#xff0c;正好我也是一个喜欢凑热闹的家伙&#xff0c;那就跟着烧一把火吧。^_^ 这是前阵子一个朋友面试外企的一套关于数据库设计的试题&#xff0c;有兴趣的朋友不妨一试。 Part I 工厂在定义一个新产品的流程如下&#x…

持续集成(一)为什么我们迫切需要持续集成

摘录自&#xff1a;http://blog.csdn.net/kkkloveyou/article/details/53875987 为什么我们迫切需要持续集成&#xff08;Continuous Integration&#xff09; 持续集成&#xff08;Continuous Integration&#xff09;&#xff0c;也就是我们经常说的 CI&#xff0c;是现代软…

spark编程基础--5.3数据读写

文件数据读写 1.本地文件系统的数据读写 1&#xff09;从文件中读取数据创建RDD 2&#xff09;把RDD写入到文本文件中 2.分布式文件系统HDFS的数据读写 3. JSON文件的读取 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript规范的…

试用最新版本的live writer发一篇日志看看

之前装Vs2008想弄WPF的时候&#xff0c;根据网上的说明&#xff0c;找VS2008的SP1&#xff0c;windows SDK的时候颇费周折&#xff0c;虽然说微软上面可以直接下&#xff0c;但是我找了半天才找到&#xff0c;总是觉得麻烦。现在就把一些WPF的相关前期准备软件的地址发出来&…

守护网络安全,我们一直在努力

据外电消息&#xff0c;日前&#xff0c;一种通过发布有关北京奥运会虚假信息的邮件来传播新型网络病毒&#xff0c;正在席卷全球。报道中写道&#xff0c;一封号称内容有关“北京奥运会可能因四川大地震取消和延迟”的电子邮件成为了“新型蠕虫恶意***程序”的源头&#xff0c…

DELPHI 中 Window 消息大全使用详解

Window 消息大全使用详解导读&#xff1a; Delphi是Borland公司的一种面向对象的可视化软件开发工具。 Delphi集中了Visual C和Visual Basic两者的优点&#xff1a;容易上手、功能强大&#xff0c;特别是在界面设计、数据库编程、网络编程方面更有其独特的优势。 Delphi中的消息…

vue 在浏览器控制台怎么调试 谷歌插件vue Devtools

vue 在浏览器控制台怎么调试 谷歌插件vue Devtools 问题&#xff1a; vuejs里面的变量&#xff0c;怎么用浏览器的console查看&#xff1f; 例如&#xff0c;想在chrome里用console.log查看变量$data&#xff0c;会显示undefined。 解决方案: 再main.js里面声明window.Vue new…

spark编程基础--5.4综合实例

操作指令如下&#xff1a; cd /usr/local/hadoop./sbin/start-dfs.sh./bin/hdfs dfs -mkdir -p spark/mycode/rdd/TopN./bin/hdfs dfs -put /usr/local/spark/mycode/TopN_file1.txt spark/mycode/rdd/TopN ./bin/hdfs dfs -put /usr/local/spark/mycode/TopN_file2.txt spark…

关于C#中的DLLImport (引)

MSDN中对DllImportAttribute的解释是这样的&#xff1a;可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求&#xff0c;必须提供包含入口点的 DLL 的名称。 并给了一个示例&#xff1a; [DllImport("KERNEL…

Bootstrap框架和inconfont、font-awesome使用

Bootstrap框架和inconfont、font-awesome使用 iconfont的使用&#xff1a;https://www.cnblogs.com/clschao/articles/10387580.html Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它…

spark编程基础--6.DataFrame

使用spark安装时自带的样例数据people.json文件&#xff0c;生成DataFrame&#xff1a; 下面从示例文件people.json中创建一个DataFrame&#xff0c;然后保存成csv格式文件&#xff0c;代码如下&#xff1a; scala> val peopleDF spark.read.format("json").loa…

firebug 的使用

[Firebug - Console控制台视图] console API文档, http://www.getfirebug.com/console.html console.info显示(i)图标 在输出时&#xff0c;需要注意第一个参数被自动识别为格式字符串 需要在页面加载前启动firebug&#xff0c;当页面加载后启动firebug时&#xff0c;就没有…

cisco PIX防火墙的配置及注解完全手册

PIX Version 6.3(1)interface ethernet0 auto 设定端口0 速率为自动interface ethernet1 100full 设定端口1 速率为100兆全双工interface ethernet2 auto 设定端口2 速率为自动nameif ethernet0 outside security0 设 定端口0 名称为 outside 安全级别为0nameif ethernet1 insi…

C/C++:*(p++)慎用!!!!!

各位代码界的大佬大家好&#xff0c;今天跟大家分享一个在C/C中常用&#xff0c;但是很危险的一串代码——*(p) 为什么说这一行代码比较危险呢&#xff0c;因为对于C/C来说&#xff0c;成也指针&#xff0c;败也指针。C/C中指针便于我们操作一块连续的内存空间中内容&#xff0…

Kindeditor学习中的那些坑

Kindeditor富文本编辑器还算比较好上手的一款插件吧&#xff0c;下面记录一下我在学习和实践中遇到的那些坑。 编辑器初始化方法和参数网上一搜一大把&#xff0c;不想搜的点这里&#xff0c;文档上各个参数已经写得很清楚了&#xff0c;直接拿过来用就OK 开始说一些实际用到时…

java2实用教程--第二章基本数据类型与数组

基本数据类型--浮点类型 public class Example2_1 {public static void main (String args[]) {char chinaWord 好,japenWord あ;char you \u4F60;int position 20320;System.out.println("汉字&#xff1a;"chinaWord"的位置&#xff1a;"(int)china…

EntityCURD操作的参数和返回值

以下是netbeans根据实体自动生成的CURD模板&#xff1a;/** To change this template, choose Tools | Templates* and open the template in the editor.*/package com.medea.order.session;import com.medea.order.entity.Storeorder;import java.util.List; import javax.ej…

[ZT]SQL Server 的事务日志意外增大或充满的处理方法

http://support.microsoft.com/kb/317375 事务日志文件Transaction Log File是用来记录数据库更新情况的文件&#xff0c;扩展名为ldf。在 SQL Server 7.0 和 SQL Server 2000 中&#xff0c;如果设置了自动增长功能&#xff0c;事务日志文件将会自动扩展。一般情况下&#xff…

powershell真香

写毕设开题报告&#xff0c;从PDF复制后会有多余空格&#xff0c;一个一个手动删除略显麻烦。 delete.cpp#include<iostream> #include<cstdio> #include<string> #include<vector> using namespace std; int main() {//freopen("UAS.txt",&…

背包的硬币问题

在一个国家仅有1分&#xff0c;2分&#xff0c;3分硬币&#xff0c;将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 HDU 1284 #include <iostream> using namespace std;const int M 32768 10;int dp[M];int main() {int n;while (~scanf("%d&q…

【转帖】OnPreRender Render的区别

转自&#xff1a;http://hi.baidu.com/trip008/blog/item/d6139ab77b5414f130add1e9.html protected override void OnPreRender(EventArgs e) protected override void Render(HtmlTextWriter writer) 这两个的区别。可否告知 asp.net页面在触发各个子控件的事件之后&#…

微信小程序如何进行登录授权和获取用户信息

微信小程序如何进行登录授权和获取用户信息